LevelListDrawable:按级别选择Drawable
更多Drawable详见Android Drawable。
1、简介
LevelListDrawable管理多个备用Drawable的资源,每个Drawable都分配了一个最大数值。 使用setLevel(int )设置对象的级别值将为图像加载下一个大于或等于其max属性的值。 LevelListDrawable的一个很好的用法示例是电池电量指示器图标,其中的不同图像表示当前电池电量。

2、语法
2.1、基本语法
LevelListDrawable的xml语法如下:
<?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>2.2、<level-list>标签
<level-list>:LevelListDrawable根标签,包含一个或多个 <item> 元素。
2.3、<item>标签
<item>定义要在某特定级别使用的可绘制对象,有如下三个属性:
①android:drawable:可绘制对象资源id。必须要有,引用要插入的可绘制对象资源。
②android:maxLevel:整型。显示此item允许的最高级别。
③android:minLevel:整型。显示此item允许的最低级别
3、示例
①创建LevelListDrawable XML资源文件,使用了四个不同状态下的电池图片,并设置对应的Level等级。
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/battery_0"
android:maxLevel="0" />
<item
android:drawable="@drawable/battery_1"
android:maxLevel="33" />
<item
android:drawable="@drawable/battery_2"
android:maxLevel="66" />
<item
android:drawable="@drawable/battery_3"
android:maxLevel="100" />
</level-list>②在布局中使用
<ImageView
android:id="@+id/battery"
...
android:src="@drawable/battery_state_drawable" />③代码中获取LevelListDrawable对象,注意要强制类型转换。
ImageView imageView = findViewById(R.id.battery);
LevelListDrawable levelListDrawable = (LevelListDrawable) imageView.getDrawable();④使用ValueAnimator开始属性动画演示效果,setLevel(int )设置对象的级别值,显示不同Level等级下对应的图片。属性动画详见属性动画:ValueAnimator及其监听器。
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 100);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int percent = (int) animation.getAnimatedValue();
levelListDrawable.setLevel(percent);
}
});
valueAnimator.setDuration(2500);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.start();最终效果如开篇所示:

参考资料:
Reference > LevelListDrawable">Android Developers > Reference > LevelListDrawable
Android levellistdrawable 基本使用

