LayerDrawable

/ Android基础控件 / 没有评论 / 296浏览

介绍

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 这里写图片描述