LayerDrawable 与 StateListDrawable 类似,也包含一个 Drawable 数组,因此系统将会按这些 Drawable 对象的数组顺序来绘制它们,索引最大的 Drawable 对象将会被绘制在最上面。
定义 LayerDrawable 对象的 XML 文件的根元素为 <layer-list>,该元素可以包含多个 <item> 元素,该元素可以指定如下属性:
- android:drawable:指定作为 LayerDrawable 元素之一的 Drawable 对象;
- android:id:为 Drawable 对象指定一个标识;
- android:bottom|top|left|right:它们用于指定一个长度值,用于指定将该 Drawable 对象绘制到目标组件的指定位置。
下面是一个简单的使用示例,自定义了两个 Drawable 资源,并简单的展示了它们:
首先是 my_seek_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background" android:drawable="@drawable/no" />
<item android:id="@android:id/progress" android:drawable="@drawable/yes" />
</layer-list>
然后是 layout_images.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/ic_launcher"
android:gravity="center"
/>
</item>
<item android:top="25dp" android:left="25dp">
<bitmap
android:src="@drawable/ic_launcher"
android:gravity="center"
/>
</item>
<item android:top="50dp" android:left="50dp">
<bitmap
android:src="@drawable/ic_launcher"
android:gravity="center"
/>
</item>
</layer-list>
然后是主布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorGray"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progressDrawable="@drawable/my_seek_bar"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/layout_images"
android:layout_marginTop="40dp"
/>
</LinearLayout>
程序的运行效果: