美文网首页
LayerDrawable简单使用

LayerDrawable简单使用

作者: 迷人的萨克斯 | 来源:发表于2018-06-05 10:28 被阅读76次

    layerDrawable在xml中对应的标签为layer-list,它表示的是一种层次化的drawable集合,可以通过将drawable不同位置的摆放来达到一些特殊的效果。

    layaerDrawable语法如下:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="可引入已编写好的drawable文件,或引入一张图片"
            android:bottom="dimension"
            android:right="dimension"
            android:left="dimension"
            android:top="dimension"
            />
    </layer-list>
    
    • 一个LayerList可以包含多个Item,每个item表示一个drawable。item的结构也比较简单,比较常用的属性有bottom,left,right,top,它们分别表示Drawable相对于view的偏移量,单位为像素。
    • 另外,我们可以通过drawable属性来直接引用一个已有的drawable资源。
    • 默认情况下,layer-list中所有的drawable都被放至View的大小,对于bitmap来说,需要使用gravity才能控制图片的显示效果。
    • Layer-list有层次的概念,下面的item会覆盖上面的item,通过合理的分层,可以实现一些特殊的叠加效果。

    1.按钮阴影效果

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- layer-list设置图层效果:每一个item是一张图层,从下往上叠放 -->
    
        <!-- item前景层-->
        <item
            android:left="2dp" //当前drawable相对与view左边两个dp的外间距
            android:top="2dp">  //当前drawable相对于view上边两个dp的外间距
            <shape>
                <gradient
                    android:angle="45"
                    android:endColor="#66ffd87c"
                    android:startColor="#6696CDCD"
                    android:type="linear" />
                <corners android:radius="10dp" />
            </shape>
        </item>
        <!-- item预览层-->
        <!-- 这层item会覆盖在之前上一层的item之上,会产生叠加的效果。
        <item
            android:bottom="2dp"    //当前drawable相对与view底部两个dp的外间距
            android:right="2dp">    //当前drawable相对与view右边两个dp的外间距
            <shape>
                <solid android:color="@android:color/white" />
                <corners android:radius="10dp" />
            </shape>
        </item>
    </layer-list>
    

    2.微信输入框效果

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 前景层-->
        <item>
            <shape android:shape="rectangle">
                <solid android:color="#0ac39e" />
            </shape>
        </item>
        <!-- 第二层,当前drawable为一个纯白色,相对view底部6dp外间距。
        <item android:bottom="6dp">
            <shape android:shape="rectangle">
                <solid android:color="#ffffff" />
            </shape>
        </item>
        <! --第三层,当前drawable为一个纯白色,相对view下,左,右各1dp的外间距。
        <item
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp">
            <shape android:shape="rectangle">
                <solid android:color="#ffffff" />
            </shape>
        </item>
    
    </layer-list>
    

    以上来自Android开发艺术探索第六章drawable之layerDrawable,因为在工作中频频使用到,所以在此记录。

    相关文章

      网友评论

          本文标题:LayerDrawable简单使用

          本文链接:https://www.haomeiwen.com/subject/biqufftx.html