Android青铜篇-level-list

Android

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

语法

1
2
3
4
5
6
7
8
<?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。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>

引用方法

  • xml文件里设置,或者使用代码设置
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 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值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* ImageView 设置Level
*/
public void setLevel(int level)
{
mImageView.setLevel(level);
}

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

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

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

注意

  • item元素级别不能出现负数

  • level-list中item放置的前后顺序需要注意,系统会从上往下匹配,如果查找到的item符合当前的状态,则不会再继续向下查找其它item
    如下:设置Level为2,则第一个item匹配,就不匹配第二个item,顺序很重要

1
2
3
4
5
6
7
8
9
<?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>
谢谢老板,请尽情用红包来蹂躏我吧!!!
0%