关于layer-list和ripple的使用

layer-list使用

  1. layer-list是做什么用的呢,他有点像FrameLayout的意思,他可以多个Drawable叠起来,默认状态下是从下到上堆叠的。
  2. layer-list标签是item标签,drawable就写在item标签下,item标签常用的属性有 top right bottom和left来控制item距离边界的距离,比如android:bottom="10dp" 表示该item下边界往里缩了10dp。
    好吧,首先在drawable文件夹下新建一个drawable res文件
    举个例子:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="0dp"
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="2dp"
                android:color="@color/colorPrimary"></stroke>
            <padding android:bottom="2dp"></padding>
        </shape>
    </item>
</layer-list>

这是我写了一个edittext的背景drawable,如果我们把edtitext的background换成我们写的

 <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="@drawable/et_backound_shape" />

看一下效果:


图片.png

嗯 very low 但是效果出来了 好的 我们再来写一个 ,其他代码不动 只改变他的颜色

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

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

    <shape android:shape="rectangle">
        <stroke
            android:width="2dp"
            android:color="@color/colorAccent"></stroke>

        <padding android:bottom="2dp"></padding>

    </shape>

</item>

</layer-list>

然后,我们写一个selector,让他在获取焦点的时候改变一下颜色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

   // <item android:drawable="@drawable/et_unenable_shape" android:state_enabled="false"></item>
    <item android:drawable="@drawable/et_selected_shape" android:state_focused="true"></item>
    <item android:drawable="@drawable/et_unselected_shape" android:state_focused="false"></item>

</selector>

把edittext的背景改成这个selector android:background="@drawable/et_selector"
然后看一下效果


QQ截图20190331233752.png

哈哈 这是两种不同状态下的效果 ,小伙伴可以自己去写背景哦,layer-list里的item实际上是一个边框,但是layer-list他把左 上 右往外挪了,所以现在只有下边有边框了。
好吧,本来还想写一个ripper实现水波纹效果的,明天再写吧

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

推荐阅读更多精彩内容