level-list

应用场景:当一个ImageView根据不同的值显示不同的样式时,在代码中我们可能会用到多个 if-else 或者是 switch 来动态显示
if (condition1){   
        image.setBackground(R.id.xxx1);   
}else if (condition2){   
        image.setBackground(R.id.xxx2);   
}  

……


这时,我们完全可以考虑用level-list.下面是一个level-list的文件 level_list_demo.xml:
<?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控件使用时只需要引用即可:

< ImageView
    android: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>



你可能感兴趣的:(level-list)