关闭

Android 图片Drawable类型之Level List

标签: androiddrawablelevel-listDrawablelevel
1757人阅读 评论(0) 收藏 举报
分类:

Level List类型的图形用来管理一组可进行切换的图片
系统会根据level值来自动匹配对应的图片,如手机wifi的信号强度图标,电量剩余图标,就是通过Level List类型来显示的
语法:

    <?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>
  • maxLevel:匹配的最大值
  • minLevel:匹配的最小值
  • drawable:匹配的图片

基本用法:在drawable文件夹中新建一个xml文件,然后其它控件通过background引用,ImageView还可以通过src引用
level最开始匹配的值是0

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 值为0~5时显示的图片 -->
    <item
        android:minLevel="0"
        android:maxLevel="5"
        android:drawable="@drawable/sblue" />

    <!-- 值为6~10时显示的图片 -->
    <item
        android:minLevel="6"
        android:maxLevel="10"
        android:drawable="@drawable/green" />
</level-list>

引用方法

<!-- ImageView可通过src或background设置 -->
<ImageView
        android:id="@+id/iv_photo_frame"
        android:layout_width="match_parent"
        android:src="@drawable/bg_level"
        android:layout_height="100dp"/>

<!-- 其它控件通过background设置 -->
<TextView
        android:id="@+id/tv_leveltext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_level"/>

通过代码控制Level的值
ImageView 如果是通过src引用的,可通过getDrawable获取LevelListDrawable对象,也可直接通过setImageLevel方法直接设置level值

    /**
     * ImageView 根据传入的level值显示对应的图片
     */
    public void changeImageView(int level) {
        LevelListDrawable levelListDrawable = (LevelListDrawable) mPhotoIv.getDrawable();
        levelListDrawable.setLevel(level);
    }

如果是通过background引用的,控件可直接通过getBackground方法获取LevelListDrawable对象

        LevelListDrawable levelListDrawable = (LevelListDrawable) mView.getBackground();
        levelListDrawable.setLevel(level);

这里写图片描述
注意:level-list中item放置的前后顺序需要注意,系统会从上往下匹配,如果查找到的item符合当前的状态,则不会再继续向下查找其它item

所以我们的level-list不能写成这样

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:maxLevel="5"
        android:drawable="@drawable/sblue" />
    <item
        android:maxLevel="2"
        android:drawable="@drawable/green" />
</level-list>

如果写成这样,那么第二个item就没有任何存在的意义了,因为第一个item已经匹配了所有level小于5时的状态

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:222492次
    • 积分:2867
    • 等级:
    • 排名:第12461名
    • 原创:58篇
    • 转载:4篇
    • 译文:0篇
    • 评论:48条
    博客专栏
    文章分类
    最新评论