LayerDrawable简单使用

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,因为在工作中频频使用到,所以在此记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,424评论 25 708
  • 1、Drawable 简介 Drawable——可简单理解为可绘制物,表示一些可以绘制在 Canvas 上的对象。...
    牧秦丶阅读 15,045评论 0 15
  • 一、 Drawable简介 1 Drawable表示的是一种可以在Canvas上进行绘制的抽象的概念,可以是纯颜色...
    黄海佳阅读 1,239评论 0 10
  • 很多人简单的认为微商就是在微信上卖东西的人,更有甚者认为微商就是朋友圈卖面膜的。这些观点都是很荒谬的,外行人这么认...
    怙棘2018阅读 17,314评论 2 1
  • 66英语体系chapter 1:主要阐述了在使用英语沟通时别人不理解或误解你想表达的意思的2种情况:1: 26个字...
    东东薇儿阅读 92评论 0 0