《Android 基础(四十六)》 LayerDrawable & layer-list

xiaoxiao2021-02-28  58

介绍

LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。

每个可绘制对象由单一 < layer-list > 元素内的 < item > 元素表示。

语法

<?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

<?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

<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,我们可以根据自己的需要,在用户交互过程中执行修改等操作。

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

onlyloveyd 认证博客专家 Android Kotlin OpenCV 个人公众号【OpenCV or Android】,热爱Android、Kotlin、Flutter和OpenCV。毕业于华中科技大学计算机专业,曾就职于华为武汉研究所。目前在三线小城市生活,专注技术与研发。
转载请注明原文地址: https://www.6miu.com/read-2620448.html

最新回复(0)