LevelListDrawable

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

LeveListDrawable的xml资源文件定义

  • 位置
    res/drawable/filename.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>
  • 元素
<level-list>
    必须作为根节点。包含多个<item>节点。
    属性:
    xmlns:android
    String类型。必须的。定义XML文件的命名空间,必须是 "http://schemas.android.com/apk/res/android".
<item>
    定义某个level使用的drawable资源
    属性:
    
    android:drawable
    Drawable 资源。必须的。引用一个Drawable资源
    
    android:maxLevel
    Integer类型。该项所允许的最大level。
   
    android:minLevel
    Integer类型。该项所允许的最小level。

使用实例

  1. 在XML文件中定义level_list.xml:
<?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> 
  1. 在布局文件使用
<ImageView 
    android:id="@+id/imgView"
    android:src="@drawable/level_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
  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元素级别里面不能出现负数,只能是正整数,并且要么是升序,要么是倒序,顺序乱了可能引起不起作用的现象。
    原文作者:ccbuluo
    原文地址: https://www.jianshu.com/p/ce993d27f8f8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞