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时的状态

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值