介绍 LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。
每个可绘制对象由单一 < layer-list > 元素内的 < item > 元素表示。
语法 1 2 3 4 5 6 7 8 9 10 11 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android ="http://schemas.android.com/apk/res/android" > <item android:drawable ="@[package:]drawable/drawable_resource" android:id ="@[+][package:]id/resource_name" android:top ="dimension" android:right ="dimension" android:bottom ="dimension" android:left ="dimension" /> </layer-list >
作用 layer-list,图层列表,可以帮助我们绘制一些特殊的图形。
部分实践 Line & Dot layer-list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android ="http://schemas.android.com/apk/res/android" > <item android:bottom ="2dp" android:right ="2dp" android:top ="2dp" > <shape android:shape ="rectangle" > <solid android:color ="#1750ff" /> </shape > </item > <item android:gravity ="right" > <shape android:shape ="oval" > <solid android:color ="#1750ff" /> <size android:width ="5dp" android:height ="5dp" /> </shape > </item > </layer-list >
use in layout 1 2 3 4 5 6 <View android:layout_width ="100dp" android:layout_height ="5dp" android:layout_marginLeft ="50dp" android:layout_marginTop ="50dp" android:background ="@drawable/horizontal_line_dot" />
result
代码修改Drawable颜色 通过LayerDrawable类中的部分方法,我们可以拿到每一层的Drawable,这样针对不通层级的Drawable,我们可以根据自己的需要,在用户交互过程中执行修改等操作。
1 2 3 4 5 6 7 bt_change_color.setOnClickListener({ var background: LayerDrawable = horizontal_line_dot.background as LayerDrawable for (index in 0 ..(background.numberOfLayers - 1 )) { var drawable: GradientDrawable = background.getDrawable(index) as GradientDrawable drawable.setColor(Color.BLACK) } })
Shape 关于Shape的用法,请阅Shape