各种XML形状作为一个drawable

时间:2013-11-28 21:21:09

标签: android xml graphics shape

我正在尝试通过一个必须包含各种形状的XML文件来设置背景,我不想让它们重叠(我已经玩过了)但是我希望它们是一个低于另一个。

我已经在一个xml中定义了一个图层列表,现在我希望在该图层下有一个形状。

如何仅使用xml实现这一目标?

谢谢,我一直在寻找周围,但我发现它是关于图层列表的信息而不是这种特殊情况。我确定这里有关于它的帖子,但我似乎无法找到它。提前抱歉。

PD:既然我问,有什么方法可以在形状上实现模糊效果吗?

编辑:另一种提出相同问题的方法:我有一个rectangle.xml和一个circle.xml,如何将一个放在另一个之下,以便在后台使用。

1 个答案:

答案 0 :(得分:1)

这里有两个明显的选择:

  1. 将图层拆分为单独的可绘制对象,并将它们分配到不同的视图中。垂直方向LinearLayout
  2. android:top属性指定适当的值以抵消第二个(以及第3个和第4个等)drawable。
  3. 1的示例:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/drawable1" />
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/drawable2" />
    </LinearLayout>
    

    如果您当前的LayerDrawable描述某种状态,您可能还需要查看StateListDrawableLevelListDrawable

    2的例子:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:drawable="@drawable/drawable1" />
        <item android:drawable="@drawable/drawable1" android:top="50dp" />
    </layer-list>
    

    第二个选项需要一些关于第一个项目大小的先验知识。如果使用xml定义drawable,则必须在设计时设置适当的偏移值。