004-Android layer-list绘制详解(图文)

2,069 阅读1分钟

1.标签功能

layer-list 相当于ps中的图层列表,形象地表示,就是几张照片,叠放在桌子上,先放的在底下,后放的在上面。

可以类比FrameLayout布局,item就相当于叠放的子view。

2.使用

2.1 图层叠加举例

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <!--
        android:dither="true"
        表示是否对图像进行抖动处理。当图像的bit-color较少时,通过颜色值的抖动来增加可用颜色数量,并保持较好的显示效果-->
        <shape
            android:dither="true"
            android:shape="oval">
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="2dp"
                android:color="#ffaa00" />
        </shape>
    </item>
    <!--    距离上下左右的值
            android:bottom="10dp"
            android:top="10dp"
            android:left="10dp"
            android:right="10dp"-->
    <item
        android:bottom="10dp"
        android:left="2dp"
        android:right="10dp"
        android:top="10dp">
        <shape android:shape="oval">
            <size
                android:width="6dp"
                android:height="6dp" />
            <solid android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item
        android:bottom="2dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp">
        <shape android:shape="oval">
            <size
                android:width="6dp"
                android:height="6dp" />
            <solid android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item
        android:bottom="10dp"
        android:left="10dp"
        android:right="2dp"
        android:top="10dp">
        <shape android:shape="oval">
            <size
                android:width="6dp"
                android:height="6dp" />
            <solid android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="2dp">
        <shape android:shape="oval">
            <size
                android:width="6dp"
                android:height="6dp" />
            <solid android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
</layer-list>

2.2 绘制背景阴影

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="6dp"
        android:top="6dp">
        <shape>
<!--            <solid android:color="#b4b5b6" />-->
            <gradient android:endColor="#f2f2f2"
                android:startColor="#b4b5b6"
                android:angle="135"
                >
            </gradient>
        </shape>
    </item>
    <item
        android:bottom="6dp"
        android:right="6dp">
        <shape>
            <solid android:color="#ff0000" />
        </shape>
    </item>
</layer-list>

2.3 使用bitmap图层

<?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/ic_driver"
            />
    </item>
    <item
        android:left="150dp"
        android:top="150dp"
        >
<!-- 移除android:gravity="center" 会导致图片拉伸/缩放 -->
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_driver"
            android:tint="@android:color/holo_green_dark"
           />
    </item>
    <item
        android:left="250dp"
        android:top="250dp"
        >
<!-- 移除android:gravity="center" 会导致图片拉伸/缩放 -->
        <bitmap
            android:gravity="center"
            android:src="@drawable/ic_driver"
            android:tint="@android:color/holo_red_dark"
            />
    </item>
</layer-list>