Android Drawable之LevelListDrawable

原文出处:http://www.ccbu.cc/android/listleveldrawable

LeveListDrawable通常用来管理一组Drawable资源,通过LeveListDrawable的控制,我们可以很方便的实现这些Drawable资源的现实切换。LeveListDrawable里面的每一个drawable资源与一个最大数值结合起来,作为LevelListDrawable资源的一项。
调用Drawable的setLevel()方法可以加载level-list或代码中定义的某个drawable资源,判断加载某项的方式:level-list中某项的Android:maxLevel数值大于或者等于setLevel设置的数值,就会被加载。

LeveListDrawable的xml资源文件定义

  • 位置
    res/drawable/filename.xml

  • 语法



    

  • 元素

    必须作为根节点。包含多个节点。
    属性:
    xmlns:android
    String类型。必须的。定义XML文件的命名空间,必须是 "http://schemas.android.com/apk/res/android".

    定义某个level使用的drawable资源
    属性:
    
    android:drawable
    Drawable 资源。必须的。引用一个Drawable资源
    
    android:maxLevel
    Integer类型。该项所允许的最大level。
   
    android:minLevel
    Integer类型。该项所允许的最小level。

使用实例

  1. 在XML文件中定义level_list.xml:
  
  
    
    
    
    
    
  
  1. 在布局文件使用

  1. 在代码中调用
ImageView imageView = (ImageView) findViewById(R.id.imgView);  
imageView.setImageLevel(1);//默认的level为0,此处设置为1

注:ImageView提供了setImageLevel来设置src的Drawable的Level。

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

注意事项

  1. 默认的level为0,如果没有和0匹配的level,那么就不显示。
  2. level匹配以maxLevel优先。即如果有个item,min:1,max:2。 另一份item,min:2,max:3。
    如果此时设置level=2,那么会匹配第一个item。
  3. item元素级别里面不能出现负数,只能是正整数,并且要么是升序,要么是倒序,顺序乱了可能引起不起作用的现象。

你可能感兴趣的:(Android Drawable之LevelListDrawable)