Android资源之图像资源(图像级别资源)

图像状态资源只能定义有限的几种状态。如果需要更多的状态,就要使用图像级别资源。在该资源文件中可以定义任意多个图像级别。每个图像级别是一个整数区间,可以通过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);

	}

	//"开灯"按钮的单击事件方法
	public void onClick_LampOn(View view)
	{
		//设置level为15,显示lamp_on.png
		ivLamp.setImageLevel(15);
	}
	//"关灯"按钮的单击事件方法
		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;
	}

}

结合上一篇的博文,大家可以看出,图像状态资源与图像级别资源都可以用来实现按钮不同状态显示不同的图像的效果,如果你的控制只需显示2个或3个效果你可以使用图像状态资源,但是如果你想显示更多的效果,还是使用图像级别资源。

案例效果截图如下:

转载请注明出处:

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

Android资源之图像资源(图像级别资源)

时间: 2025-01-16 06:37:47

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

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

developer.android.com 官方开发人员网站推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是以下的这些文章: Devices and Displays  (设备和显示) Touch Feedback(触摸反馈) Metrics and Grids (度量和网格) Iconography (图像研究) 同一时候也请下载 Downloads 部分的代码,这些代码囊括了 Android 图标和控件的设计模板,源文件.样式以及无

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

1.图片资源 图片资源是最简单的Drawable资源,只要把*.png.*.jpg*..gif等格式的图片放入/res/drawable-XXX目录下,Android SDK就会在编译应用自动加载该图片,并在R资源清单类中生成该资源的引用. Android不允许图片资源的文件名中出现大写字母,且不能以数字开头. java中访问资源:[.]R.drawable. XML中访问资源:@[]drawable/file_name 为了在程序中获得实际的Drawable对象,Resources提供了Dra

android R文件不在自动生成资源id

关于android R文件不在自动生成资源id的问题解决: 1.设置eclipse->project->build automatically 2.上述没有解决的话 project->clear

[Android学习系列20]图形图像的一些事

参考: android图形系统详解一:Canvas android图形系统详解二:Drawables android图形系统详解三:形状Drawable和九宫格 android图形系统详解四:控制硬加速 android图形系统详解五:Android绘制模式 android图形系统详解六:View layer[Android学习系列20]图形图像的一些事,码迷,mamicode.com

在IIS上新发布的网站,样式与js资源文件加载不到(资源文件和网页同一个域名下)

在IIS上新发布的网站,网站能打开,但样式与js资源文件加载不到(资源文件和网页是同一个域名下,例如:网页www.xxx.com/index.aspx,图片www.xxx.com/pic.png). 然后单独打开资源文件(例如打开图片的链接)是,报错: 这个问题应该是web.config配置文件的设置问题. 在配置文件的<httpHandlers>下的节点,对应的资源文件的type值设置可能是“System.Web.DefaultHttpHandler”值(默认),例如: <httpHa

Atitti 图像处理 图像混合 图像叠加&#160;blend 原理与实现

Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不仅用于广泛使用的Photoshop中,也应用于AfterEffect.llustrator . Dreamweaver. Fireworks等软件.主要功效是可以用不同的方法将对象颜色与底层对象的颜色混合.当您将一种混合模式应用于某一对象时,在此对象的图层或组下方的任何对象上都可看到混合模式的效果.

图像热点&图像映射

图像映射 图像映射也称为图像热点. 作用: 让同一张图片上的不同区域,可以实现多个不同的超链接功能. 图示: <map>图像映射三步走: 图像映射的实现需要三方面配合完成: 1.图像映射容器,就是一个img标签,需使用usemap属性与map标签建立联系 2.图像映射,就是一个map标签,需要使用name属性与map标签建立联系 3.热点区域,需要使用map标签的子标签area来建立热点区域 ? 语法格式: <img src="1.jpg" usemap="

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能

import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.color.ColorSpace; import java.awt.geom.AffineTransform;

Android 图片Bitmap,drawable,res资源图片之间转换

一.知识介绍 ①res资源图片是放在项目res文件下的资源图片 ②BitMap位图,一般文件后缀为BMP,需要编码器编码,如RGB565,RGB8888等.一种逐像素的显示对象,其执行效率高,但缺点也很明显,存储效率低. ③Drawable,通用的图形对象,它可以装载常用的图像,GIF,PNG,JPG,也支持BMP,提供一些高级的可视化的对象,如渐变,图形等. 二.项目案例 [步骤] ①将图片放入res/drawable文件夹中,这里面的图片属于res资源图片 ②将图片处理定义成工具类,方便使用