图像状态资源仅仅能定义有限的几种状态。

假设须要很多其它的状态,就要使用图像级别资源。

在该资源文件里能够定义随意多个图像级别。

每一个图像级别是一个整数区间,能够通过ImageView.setImageLevel或Drawable.setLevel方法切换不同状态的图像。

图像级别资源是XML格式的文件,必须将<level-list>标签作为XML的根节点。

<level-list>标签中能够有随意多个<item>标签,每个<item>标签表示一个级别区间。

级别区间用android:minLevel和android:maxLevel属性设置。

setImageLevel或setLevel方法设置的级别在某个区间内(android:minLevel<=level<=android:maxLevel),系统就会先用哪个区间相应的图像(用android:drawable属性设置)。在建立这个资源文件时。採用新建Android
XML时,没有根节点为<level_list>的xml。只是这不要紧,能够新建一个全新的普通的XML文件。然后写入对应代码就可以。

以下我给出一个详细的实例(开关灯):

lamp.xml图像级别资源文件例如以下:

<?

xml version="1.0" encoding="UTF-8"?

>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/lamp_off" android:minLevel="6" android:maxLevel="10"></item>
<item android:drawable="@drawable/lamp_on" android:minLevel="12" android:maxLevel="20"></item>
</level-list>

上面的lamp.xml文件总共定义了两个级别的图像资源。

以下给出主页面布局文件main_layout.xml文件,例如以下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <ImageView
android:id="@+id/imageview_lamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/lamp"
/> <Button
android:onClick="onClick_LampOn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开灯"
/>
<Button
android:onClick="onClick_LampOff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关灯"
/>
</LinearLayout>

对应的MainActivity的代码例如以下:

package com.gc.drawablestudy;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
/**author:Android将军*/
public class MainActivity extends Activity {
private ImageView ivLamp; @SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Resources res=getResources();
//Drawable drawable=res.getDrawable(R.drawable.bitmap_test);
//TextView txt=(TextView)findViewById(R.id.textView);
//txt.setBackground(drawable);
ivLamp=(ImageView)findViewById(R.id.imageview_lamp);
//设置level为8。显示lamp_off.png
ivLamp.setImageLevel(8); } //"开灯"button的单击事件方法
public void onClick_LampOn(View view)
{
//设置level为15,显示lamp_on.png
ivLamp.setImageLevel(15);
}
//"关灯"button的单击事件方法
public void onClick_LampOff(View view)
{
//设置level为6,显示lamp_off.png
ivLamp.setImageLevel(6);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

结合上一篇的博文,大家能够看出,图像状态资源与图像级别资源都能够用来实现button不同状态显示不同的图像的效果,假设你的控制仅仅需显示2个或3个效果你能够使用图像状态资源,可是假设你想显示很多其它的效果。还是使用图像级别资源。

案例效果截图例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9qaWFuZ2p1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

转载请注明出处:

http://blog.csdn.net/android_jiangjun/article/details/32308551

Android资源之图像资源(图像级别资源)的更多相关文章

  1. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

  2. Android开发人员必知的开发资源

    developer.android.com 官方开发人员网站推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是以下的这些文章: Devices ...

  3. android源码framework下添加新资源的方法

    编译带有资源的jar包,需要更改frameworks层,方法如下: 一.增加png类型的图片资源 1.将appupdate模块所有用到的png格式图片拷贝到framework/base/core/re ...

  4. Android学习15--使用(Drawable)资源

    1.图片资源 图片资源是最简单的Drawable资源.仅仅要把*.png.*.jpg*..gif等格式的图片放入/res/drawable-XXX文件夹下,Android SDK就会在编译应用自己主动 ...

  5. [Android]使用化名(alias)功能防止相同资源的重复

    在为一个应用匹配不同资源文件的时候,有时可能需要在不同适配类型的资源路径下使用相同的资源文件,这时使用alias方法可以防止相同资源文件的重复,提高效率.以下摘自Android开发文档http://d ...

  6. 深入探索Android热修复技术原理读书笔记 —— 资源热修复技术

    该系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 1 普遍的实现方式 Android资源的热修复,就 ...

  7. 静态资源(StaticResource)和动态资源(DynamicResource)

    静态资源(StaticResource)和动态资源(DynamicResource) 资源可以作为静态资源或动态资源进行引用.这是通过使用 StaticResource 标记扩展或 DynamicRe ...

  8. 使用KRPano资源分析工具分析动态网站资源

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  9. zzy:请求静态资源和请求动态资源, src再次请求服务器资源

    [总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...

随机推荐

  1. 使用morphia实现对mongodb的聚合查询

    morphia是谷歌的一个针对mongodb的数据化持久框架: 关于mongodb的介绍不在这里展示,直接进入主题:采用morphia实现对mongodb的聚合查询 这里获取所有学生的分数总和 spr ...

  2. JSONP 应用

    受限于浏览器的同源安全策略, js 无法发起跨域的请求. 但是 HTML 中的 <script> 标签却可以引入跨域的文件使用. 而 JSONP 就是利用 <script> 的 ...

  3. js 动态加载select触发事件

    动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) { $.ajax({ type: " ...

  4. Spring资源访问接口Resource

    该接口拥有对不同资源类型的实现类 boolean exists() 资源是否存在 boolean isOpen() 资源是否打开 URL getURL() 如果底层资源可以表示成URL,则该方法返回对 ...

  5. TWaver GIS制作穹顶之下的雾霾地图

    “我不满意,我不想等待,我也不再推诿,我要站出来做一点什么.我要做的事,就在此时,就在此刻,就在此地,就在此生”.自离职央视后,沉寂许久的知名记者.主持人柴静昨日携个人视频新作 <穹顶之下> ...

  6. UVA - 1619 Feel Good(扫描法)

    题目: 思路: 预处理出a[i]在哪个范围区间内是最小的,然后直接遍历a数组求答案就可以了. 这个预处理的技巧巧妙的用了之前的处理结果.(大佬tql) 代码: #include <bits/st ...

  7. asp.net mvc,基于aop实现的接口访问统计、接口缓存等

    其实asp.net 上aop现有的框架应该蛮多的,比如静态注入式的PostSharp(新版本好像已经商业化了,旧版本又不支持.net4.0+),或者通过反射的(性能会降低). 本文则是通过mvc其中一 ...

  8. 使用Postman Interceptor发送带cookie的请求一直loading的解决法案

    很多web网页开发人员都知道Postman限制由于chrome安全的限制,发不出带cookie和带有自定义头部标签的请求.想要发出由于chrome安全的限制,发不出带cookie和带有自定义头部标签的 ...

  9. python3虚拟环境应用

    python3自带虚拟环境venv,大致操作只有三步 1. 创建虚拟环境 python3 -m venv venv(名称随意) 2. 激活虚拟环境 source venv/bin/activate 3 ...

  10. gnulpot

    gnulpot Table of Contents 1. Label position 2. coordinates 3. Symbols 4. key 4.1. key position 4.2. ...