梦工厂

你才20几岁,你可以成为任何你想成为的人

Android 图片Drawable类型之Level List

Level List类型的图形用来管理一组可进行切换的图片
系统会根据level值来自动匹配对应的图片,如手机wifi的信号强度图标,电量剩余图标,就是通过Level List类型来显示的
语法:

    <?xml version="1.0" encoding="utf-8"?>
    <level-list
        xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:drawable="@drawable/drawable_resource"
            android:maxLevel="integer"
            android:minLevel="integer" />
    </level-list>
  • maxLevel:匹配的最大值
  • minLevel:匹配的最小值
  • drawable:匹配的图片

基本用法:在drawable文件夹中新建一个xml文件,然后其它控件通过background引用,ImageView还可以通过src引用
level最开始匹配的值是0

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 值为0~5时显示的图片 -->
    <item
        android:minLevel="0"
        android:maxLevel="5"
        android:drawable="@drawable/sblue" />

    <!-- 值为6~10时显示的图片 -->
    <item
        android:minLevel="6"
        android:maxLevel="10"
        android:drawable="@drawable/green" />
</level-list>

引用方法

<!-- ImageView可通过src或background设置 -->
<ImageView
        android:id="@+id/iv_photo_frame"
        android:layout_width="match_parent"
        android:src="@drawable/bg_level"
        android:layout_height="100dp"/>

<!-- 其它控件通过background设置 -->
<TextView
        android:id="@+id/tv_leveltext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_level"/>

通过代码控制Level的值
ImageView 如果是通过src引用的,可通过getDrawable获取LevelListDrawable对象,也可直接通过setImageLevel方法直接设置level值

    /**
     * ImageView 根据传入的level值显示对应的图片
     */
    public void changeImageView(int level) {
        LevelListDrawable levelListDrawable = (LevelListDrawable) mPhotoIv.getDrawable();
        levelListDrawable.setLevel(level);
    }

如果是通过background引用的,控件可直接通过getBackground方法获取LevelListDrawable对象

        LevelListDrawable levelListDrawable = (LevelListDrawable) mView.getBackground();
        levelListDrawable.setLevel(level);

这里写图片描述
注意:level-list中item放置的前后顺序需要注意,系统会从上往下匹配,如果查找到的item符合当前的状态,则不会再继续向下查找其它item

所以我们的level-list不能写成这样

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:maxLevel="5"
        android:drawable="@drawable/sblue" />
    <item
        android:maxLevel="2"
        android:drawable="@drawable/green" />
</level-list>

如果写成这样,那么第二个item就没有任何存在的意义了,因为第一个item已经匹配了所有level小于5时的状态

阅读更多
版权声明:❤ 如果觉得我的文章给您带来了帮助,请帮忙点赞/评论,您的鼓励是我写作的最大动力!❤(原创不易,未经本人允许不得转载) https://blog.csdn.net/zhuwentao2150/article/details/52347474
个人分类: Android技术
上一篇Android 图片Drawable类型之State List
下一篇Android FloatingActionButton使用方法及小技巧-design
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭