应用场景:当一个ImageView根据不同的值显示不同的样式时,在代码中我们可能会用到多个 if-else 或者是 switch 来动态显示
if (condition1){
image.setBackground(R.id.xxx1);
}else if (condition2){
image.setBackground(R.id.xxx2);
}
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/level_list_demo" />
我们在java代码中调用
imageView.setImageLevel(value);
value的值在上面哪一个范围内,那么imageview就显示对应范围下的图片。
注意事项:
if (condition1){
image.setBackground(R.id.xxx1);
}else if (condition2){
image.setBackground(R.id.xxx2);
}
……
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/icon_0"
android:maxLevel="20"
android:minLevel="0"/>
<item
android:drawable="@drawable/icon_20"
android:maxLevel="40"
android:minLevel="21"/>
<item
android:drawable="@drawable/icon_40"
android:maxLevel="60"
android:minLevel="41"/>
<item
android:drawable="@drawable/icon_60"
android:maxLevel="80"
android:minLevel="61"/>
<item
android:drawable="@drawable/icon_80"
android:maxLevel="99"
android:minLevel="81"/>
<item
android:drawable="@drawable/icon_100"
android:maxLevel="100"/>
</level-list>
ImageView控件使用时只需要引用即可:
< ImageViewandroid:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/level_list_demo" />
我们在java代码中调用
imageView.setImageLevel(value);
value的值在上面哪一个范围内,那么imageview就显示对应范围下的图片。
注意事项:
- 使用ImageView的src设置成已创建好的xml文件。
- 默认的level为0,如果没有和0匹配的level,那么就不显示。
- level匹配以maxLevel优先。即如果有个item,min:1,max:2。 另一份item,min:2,max:3。如果此时设置level=2,那么会匹配第一个item。
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="1" android:drawable="@drawable/image1" />
<item android:maxLevel="2" android:drawable="@drawable/image2" />
<item android:maxLevel="3" android:drawable="@drawable/image3" />
<item android:maxLevel="4" android:drawable="@drawable/image4" />
<item android:maxLevel="5" android:drawable="@drawable/image5" />
</level-list>