同一个ImageView显示不同的图片(LevelDrawable)
2016-06-19 22:55
489 查看
在一个ImageView中显示不同的图片,往往会使用:
if (条件1)
{
image.setBackground(R.id.xxx1);
}
else if (条件2)
{
image.setBackground(R.id.xxx2);
}
else if …
其实我们可以使用另一个简便的方法实现相同的功能
首先,在res/drawable下建立一个xml文件,内容如下
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/battery_0"
android:maxLevel="0"/>
<item
android:drawable="@drawable/battery_1"
android:maxLevel="1"/>
<item
android:drawable="@drawable/battery_2"
android:maxLevel="2"/>
<item
android:drawable="@drawable/battery_3"
android:maxLevel="3"/>
<item
android:drawable="@drawable/battery_4"
android:maxLevel="4"/>
</level-list>
然后在layout中把image view的src设置成已创建好的xml文件
程序中变换图片时,只需要使用
imageview.getDrawable().setLevel(1);
或者imageview.setImageLevel(1);
Android会根据level的值自动选择对应的图片。手机显示剩余电量就是用这个方法来显示不同图片的
使用LevelDrawable注意几点:
1、默认的level为0,如果没有和0匹配的level,那么就不显示。
2、level匹配以maxLevel优先。即如果有个item,min:1,max:2。 另一份item,min:2,max:3。
如果此时设置level=2,那么会匹配第一个item。
if (条件1)
{
image.setBackground(R.id.xxx1);
}
else if (条件2)
{
image.setBackground(R.id.xxx2);
}
else if …
其实我们可以使用另一个简便的方法实现相同的功能
首先,在res/drawable下建立一个xml文件,内容如下
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/battery_0"
android:maxLevel="0"/>
<item
android:drawable="@drawable/battery_1"
android:maxLevel="1"/>
<item
android:drawable="@drawable/battery_2"
android:maxLevel="2"/>
<item
android:drawable="@drawable/battery_3"
android:maxLevel="3"/>
<item
android:drawable="@drawable/battery_4"
android:maxLevel="4"/>
</level-list>
然后在layout中把image view的src设置成已创建好的xml文件
程序中变换图片时,只需要使用
imageview.getDrawable().setLevel(1);
或者imageview.setImageLevel(1);
Android会根据level的值自动选择对应的图片。手机显示剩余电量就是用这个方法来显示不同图片的
使用LevelDrawable注意几点:
1、默认的level为0,如果没有和0匹配的level,那么就不显示。
2、level匹配以maxLevel优先。即如果有个item,min:1,max:2。 另一份item,min:2,max:3。
如果此时设置level=2,那么会匹配第一个item。
相关文章推荐
- Android打造带透明圆弧的ImageView
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- Ruby中XML格式数据处理库REXML的使用方法指南
- C#中如何使用 XmlReader 读取XML文件
- C#针对xml基本操作及保存配置文件应用实例
- Ruby使用REXML库来解析xml格式数据的方法
- Ruby程序中创建和解析XML文件的方法
- Ruby的XML格式数据解析库Nokogiri的使用进阶
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#操作XML文件实例汇总
- C# XML序列化方法及常用特性总结分析