Android样式开发之layer-list、level-list总结

layer-list将多个图片或效果按照顺序层叠起来,通常和selector、shape配合使用。

layer-list中的item是按照顺序从下往上叠加的,即先定义的item在下面,后面的依次往上面叠放
layer-list.jpeg

如图可以实现Tab的背景效果,和带阴影的圆角矩形

对于TAB,是由一个红色的层加一个白色的层叠在一起显示的结果。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   
<!--选中时的效果--!>
    <item android:state_checked="true">
        <layer-list>
            <!-- 红色背景 -->
            <item>
                <color android:color="#E4007F" />
            </item>
            <!-- 白色背景 -->
            <item android:bottom="4dp" android:drawable="@android:color/white" />
        </layer-list>
    </item>

<!--默认时的效果--!>
    <item>
        <layer-list>
            <!-- 红色背景 -->
            <item>
                <color android:color="#E4007F" />
            </item>
            <!-- 白色背景 -->
            <item android:bottom="1dp" android:drawable="@android:color/white" />
        </layer-list>
    </item>


</selector>

对于带阴影的圆形矩阵是由一个灰色的层加上白色的层组成

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 灰色阴影 -->
    <item
        android:left="2dp"
        android:top="4dp">
        <shape>
            <solid android:color="@android:color/darker_gray" />
            <corners android:radius="10dp" />
        </shape>
    </item>
    <!-- 白色前景 -->
    <item
        android:bottom="4dp"
        android:right="2dp">
        <shape>
            <solid android:color="#FFFFFF" />
            <corners android:radius="10dp" />
        </shape>
    </item>
</layer-list>

注意事项:

  • layer-list可以作为根节点,也可以作为selector中item的子节点。、* layer-list可以添加多个item子节点,每个item子节点对应一个drawable资源,按照item从上到下的顺序叠加在一起,再通过设置每个item的偏移量就可以看到阴影等效果了。
  • layer-list的item可以通过下面四个属性设置偏移量:
    • android:top 顶部的偏移量
    • android:bottom 底部的偏移量
    • android:left 左边的偏移量
    • android:right 右边的偏移量
      这四个偏移量和控件的margin设置差不多,都是外间距的效果。如何不设置偏移量,前面的图层就完全挡住了后面的图层,从而也看不到后面的图层效果了

level-list

在Android开发中,有时候需要对一个ImageView设置很多不同图片以表示某种应用状态,比如,典型的是手机的信号强度从强到弱有多种状态图;wifi有解锁和未解锁状态,解锁和未解锁状态的图标也是很多种。如果每次都一一的通过ImageView设置图片的src来达到这一目的,实在是太过于繁琐,且维护和管理起来不便。因此,引入ImageView的setImageLevel和level-list实现这一目的
res/drawable下新建xml

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="0" android:drawable="@drawable/p0" />
    <item android:maxLevel="1" android:drawable="@drawable/p1" />
    <item android:maxLevel="2" android:drawable="@drawable/p2" />
    <item android:maxLevel="3" android:drawable="@drawable/p3" />
    <item android:maxLevel="4" android:drawable="@drawable/p3" />
</level-list>
ImageView image=(ImageView)findViewById(R.id.image);  
        image.setImageResource(R.drawable.xxxx);  
        image.setImageLevel(3);  
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,841评论 25赞 708
  • 记得刚开始学Android时,看着自己完全用系统控件写出的不忍直视的界面,对于如何做出不一样的按钮,让它们在不同状...
    biloba阅读 1,891评论 1赞 11
  • 概述 今天我们来探究一下android的样式。其实,几乎所有的控件都可以使用 background属性去引用自定义...
    CokeNello阅读 5,210评论 1赞 19
  • 概述 Android把任何可绘制在屏幕上的图形图像都称为drawable 资源,你可以通过类似getDrawabl...
    小芸论阅读 2,960评论 2赞 5
  • 漫漫冬夜,突然想起小时候在桐乡求学时发生的故事。那还是桐乡小学三年级,班里新来了一位冯老师,是位女性,但没多久,我...
    郝逗阅读 661评论 0赞 1

友情链接更多精彩内容