LevelListDrawable使用示例

LevelListDrawable是Drawable的一个子类,顾名思义,这是一组图片,根据不同的Level,确定显示哪一张.比如说显示信号的图标,其实每个信号等级都是一张不同的图片,如果不用LevelListDrawable,那么需要根据信号强度判断切换显示指定的图标,而使用LevelListDrawable后,只需要setLevel就可以了. 第一步,准备好各个level的图片,再把他们定义到一个xml文件中: btn_playmethod.xml

<?xml version="1.0" encoding="utf-8"?>
 <level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="0" android:drawable="@drawable/ic_playmethod_normal" />
    <item android:maxLevel="1" android:drawable="@drawable/ic_playmethod_repeat_list" />
    <item android:maxLevel="2" android:drawable="@drawable/ic_playmethod_repeat_one" />
    <item android:maxLevel="3" android:drawable="@drawable/ic_playmethod_random" />
</level-list>

然后在ImageView中跟普通资源一样调用.

<ImageView
    android:id="@+id/iv_playmethod"
    android:layout_width="50dp"
    android:layout_height="40dp"
    android:layout_marginTop="5dp"
    android:scaleType="center"
    android:src="@drawable/btn_playmethod" />

下面是点击ImageView后切换图片:

LevelListDrawable listDrawable=(LevelListDrawable)iv_playmethod.getDrawable();
int currentMethod=listDrawable.getLevel();
int nextMethod=Constants.PLAY_METHOD_NORMAL;
if(currentMethod

强制转换成LevelListDrawable,就可以调用getLevel,setLevel方法,LevelListDrawable会自动找到对应的图片显示出来.