Android Drawable - layer-list

Posted winfredzen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Drawable - layer-list相关的知识,希望对你有一定的参考价值。

android Drawable - layer-list

图层列表

LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象均按照列表顺序绘制,列表中的最后一个可绘制对象绘于顶部。
每个可绘制对象由单一 <layer-list> 元素内的 <item> 元素表示。
文件位置:res/drawable/filename.xml 文件名用作资源 ID。
编译资源的数据类型: 指向 LayerDrawable 的资源指针。
资源引用:

  • 在 Java 中:R.drawable.filename
  • 在 XML 中:@[package:]drawable/filename

一些应用

1.显示border
参考:

实现left、top、right、bottom边界,如左边界(其它形式类推):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:top="-2dp" android:bottom="-2dp" android:right="-2dp">

        <shape android:shape="rectangle">

            <stroke android:width="1dp" android:color="#000"/>

        </shape>

    </item>

</layer-list

全边界如下:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#000" />
        </shape>
    </item>
</layer-list>

其它方式也可以实现,参考:

如显示顶部线和底部线

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape>
            <solid android:color="#02a0ef" />
        </shape>
    </item>

    <item android:top="1dp" android:bottom="1dp">
        <shape>
            <solid android:color="#ffffff"/>
        </shape>
    </item>

</layer-list>

2.阴影

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!--  底部的阴影  -->
    <item android:left="3dp" android:top="6dp">
        <shape>
            <solid android:color="#b4b5b6" />
        </shape>
    </item>

    <!--  上面的白色  -->
    <item android:bottom="6dp" android:right="3dp">
        <shape>
            <solid android:color="#ffffff" />
        </shape>
    </item>

</layer-list>

3.图片叠加效果

默认情况下,所有可绘制项都会缩放以适应包含视图的大小。因此,将图像放在图层列表中的不同位置可能会增大视图的大小,并且有些图像会相应地缩放。为避免缩放列表中的项目,请在 <item> 元素内使用 <bitmap> 元素指定可绘制对象,并且对某些不缩放的项目(例如 “center”)定义重力。例如,以下 <item> 定义缩放以适应其容器视图的项目:

<item android:drawable="@drawable/image" />

为避免缩放,以下示例使用重力居中的 元素:

<item>
 <bitmap android:src="@drawable/image"
        android:gravity="center" />
</item>

图片层叠的时候,有两种效果,一种是缩放后层叠,一种是不缩放的层叠

a.缩放后层叠

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <bitmap android:src="@drawable/leaf" />
    </item>


    <item android:top="50dp" android:left="50dp">
        <bitmap android:src="@drawable/leaf" />
    </item>


    <item android:top="100dp" android:left="100dp">
        <bitmap android:src="@drawable/leaf" />
    </item>

</layer-list>

使用 layer-list 图

    <ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="10dp"
        android:src="@drawable/bitmap_1"/>

b.不缩放层叠

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <bitmap android:src="@drawable/leaf" android:gravity="center"/>
    </item>


    <item android:top="50dp" android:left="50dp">
        <bitmap android:src="@drawable/leaf" android:gravity="center"/>
    </item>


    <item android:top="100dp" android:left="100dp">
        <bitmap android:src="@drawable/leaf" android:gravity="center"/>
    </item>

</layer-list>

其它

参考:

以上是关于Android Drawable - layer-list的主要内容,如果未能解决你的问题,请参考以下文章

使用 android drawable layer ist 创建比其视图更短的边框

layer-list:Android中layer-list使用详解

关于shape和selector和layer-list的drawable详细说明

Android样式的开发:drawable汇总篇

Android Drawable 与 LayerList综合汇总

android:整理drawable(余下的)