Android LayerDrawable
LayerDrawable
层图形对象,包含一个 Drawable 数组,然后按照数组对应的顺序来绘制它们
索引值最大的 Drawable 会被绘制在最上层
虽然有些 Drawable 会有交叉或者重叠的区域,但它们位于不同的层,所以并不会相互影响
LayerDrawable
以 <layer-list>
作为根节点
属性 | 说明 |
---|---|
android:drawable | 引用的位图资源,如果为空徐璈有一个 Drawable 类型的子节点 |
android:left | 层相对于容器的左边距 |
android:right | 层相对于容器的右边距 |
android:top | 层相对于容器的上边距 |
android:bottom | 层相对于容器的下边距 |
android:id | 层的 id |
范例
-
创建一个 空的 Android 项目
cn.twle.android.LayerDrawable
-
创建一个
shapeDrawable
和ClipDrawable
res/drawable/layerlist_one.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"> <shape android:shape="rectangle"> <solid android:color="#C2C2C1" /> <corners android:radius="50dp" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape android:shape="rectangle"> <solid android:color="#BCDA73" /> <corners android:radius="50dp" /> </shape> </clip> </item> </layer-list>
res/drawable/shape_slider.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#2C96ED"/> <size android:height="30dp" android:width="30dp"/> </shape>
-
修改
activity_main.xml
添加一个 Seekbar<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" > <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal" android:indeterminateOnly="false" android:maxHeight="10dp" android:minHeight="5dp" android:progressDrawable="@drawable/layerlist_one" android:thumb="@drawable/shape_slider" /> </LinearLayout>
范例 2
既然 LayerDrawable
层图形对象,我们还可以弄个 层叠图片 的效果
-
创建一个 空的 Android 项目
cn.twle.android.LayerDrawableImage
-
下载 /static/i/meimei.jpg 并放到
res/drawable
目录 -
创建一个层叠图片的
LayerDrawable
res/drawable/layerlist_two.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:gravity="center" android:src="@drawable/meimei" /> </item> <item android:left="25dp" android:top="25dp"> <bitmap android:gravity="center" android:src="@drawable/meimei" /> </item> <item android:left="50dp" android:top="50dp"> <bitmap android:gravity="center" android:src="@drawable/meimei" /> </item> </layer-list>
-
修改
activity_main.xml
添加一个ImageView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img_show" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="center" android:src="@drawable/layerlist_two" /> </LinearLayout>