LevelListDrawable学习

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <level-list  
  3.     xmlns:android="http://schemas.android.com/apk/res/android" >  
  4.     <item  
  5.         android:drawable="@drawable/drawable_resource"  
  6.         android:maxLevel="integer"  
  7.         android:minLevel="integer" />  
  8. </level-list>  


XML定义的Drawable的一种,以<level-list>作为根元素,其间可包含任意多个<item>节点,每一个<item>节点包含一个drawable对象和maxLevel与minLevel值,如:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <level-list xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <item android:minLevel="0" android:maxLevel="10" android:drawable="@drawable/b1" />  
  4.     <item android:minLevel="11" android:maxLevel="20" android:drawable="@drawable/b2" />  
  5.     <item android:minLevel="21" android:maxLevel="30" android:drawable="@drawable/b3" />      
  6.     <item android:minLevel="31" android:maxLevel="40" android:drawable="@drawable/b4" />  
  7. </level-list>  


当我们向LevelListDrawable对象提供一个Level值后,LevelListDrawable对象就会从前往后查看每一个<item>,当某个<item>节点的Level范围满足提供的那个Level值后,就会返回该<item>结点里指定的drawable。并且不会继续往后找。所以定义这个LevelListDrawable时要注意各个<item>的顺序。比如:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <level-list xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <item android:maxLevel="40" android:drawable="@drawable/b4" />     
  4.     <item android:maxLevel="10" android:drawable="@drawable/b1" />  
  5.     <item android:maxLevel="20" android:drawable="@drawable/b2" />  
  6.     <item android:maxLevel="30" android:drawable="@drawable/b3" />      
  7. </level-list>  


那么无论提供什么样的Level值,都不会返回后面三个<item>里的drawable(这里如果提供的Level值超过40,将返回一个空对象)。

 

可以通过Drawable对象的setLevel(int)方法来提供Level值。

比如当我们将一个LevelListDrawable作为一个View的background后,可以通过View的getBackground()方法获取这个Drawable对象,然后调用这个Drawable对象的setLevel()方法,提供不同的Level值,就可以改变View的背景。这个可以用来制作诸如进度条、音量调节等效果。

ImageView组件还提供了setImageLevel()方法来快捷设置android:src指定的LevelListDrawable的Level值(android:backgroudn指定的背景还是要通过View的形式来更改)

你可能感兴趣的:(LevelListDrawable学习)