在上一篇博文中。我主要解说了XML图像资源中的图层资源,在此图像资源博文中我会给大家陆续解说XMl图像资源的图像状态资源、图像级别资源、淡入淡出资源、嵌入图像资源、剪切图像资源和外形资源。

1.图像状态资源:

Android SDK提供的Button控件默认样式显得有些单调。并且这样的样式与炫丽的界面搭配在一起极不协调。当然。我们能够使用ImageView或ImgaeButton控件配合不同状态的图像做出非常酷的button,这里我给出用java代码实现button按下与正常状态的特效:

btn.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
//又一次设置按下时的背景图片
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.send_down));
}else if(event.getAction() == MotionEvent.ACTION_UP){
//再改动为抬起时的正常图片
((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.send));
}
return false;
}
});

上面的代码是用来实现button的图片切换效果的。

能够看出,为了实现button的按下特效,须要编写相当多的java代码。为此,Android提供了一种改变Button默认样式的方法,这样的方法不须要编写一行java代码.

当button处于不同状态(正常、按下、获得焦点等)时会显示不同的样式,这些样式一般使用不同的图像来渲染,这就须要指定与不同状态相应的图像,而图像状态资源就是用来指定这些图像的。

图像状态资源是XML格式的文件,必须以<selector>标签作为根节点。

在<selector>标签中包括了若干个<item>标签,用来指定对应的图像资源。

以下来详细看一个实例:

该文件名称为button.xml,实在对应的Drawable文件夹里的

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 按下状态 属性state_pressed的值为true时,表示当button按下时使用此item相应的图片来作为button的背景图-->
<item android:state_pressed="true" android:drawable="@drawable/pressed"/>
<!-- 获得焦点 state_focused的属性的意义与state_pressed类似-->
<item android:state_focused="true" android:drawable="@drawable/focused"/>
<!-- 默认状态 -->
<item android:drawable="@drawable/normal"/> </selector>

效果就如同下图所看到的:

在以后的日子里,我会尽可能的多抽时间来写很多其它更优秀的博文。

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/31341353

Android资源之图像资源(状态图像资源)的更多相关文章

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

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

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

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

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

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

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

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

  5. android项目 res/ 目录内支持的资源目录详解

    表 1. 项目 res/ 目录内支持的资源目录 目录 资源类型 animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为 ...

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

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

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

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

  8. 海洋cms自带资源发布api插件和第三方资源站接入办法说明

    海洋cms自带资源发布api插件和第三方资源站接入办法说明 时间:2016-07-15 13:46 来源:CMS模版网 作者:大宇 阅读:7095次 ===海洋cms自带API资源发布插件说明===* ...

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

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

随机推荐

  1. (转)String StringBuilder StringBuffer 对比 总结得非常好

    来源:http://blog.csdn.net/clam_clam/article/details/6831345 转自:http://www.iteye.com/topic/522167 作者:每次 ...

  2. vue 事件参数传$event打印当前组件

    <template> <div class="hello"> <button v-on:click.once="getinfo($event ...

  3. NOIp2018模拟赛四十四

    加量不加价?! 昨晚看时间变成了3.5h以为终于变成了正常难度,结果还是国家集训队作业... A题看起来很神仙,B题看上去很神仙,C题一看就知道很神仙: 结果发现B是假题,放榜后发现A也是假题,C是Y ...

  4. 紫书 习题 8-2 UVa 1610 (暴力出奇迹)

    这道题我真的想的非常的复杂, 拿草稿纸一直在找规律,推公式, 然后总有一些特殊的情况. 然后就WA了N次.无奈之下看了别人的博客, 然后就惊了.直接暴力枚举两个相邻字符串 里面的所有可能就可以了--真 ...

  5. 【BZOJ 1218】 [HNOI2003]激光炸弹

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 一开始以为可以炸多次. 然后发现是一次. 那么久直接做个前缀和就好了 枚举正方形的左上角. 然后刚好和网格对齐的话. 肯定没有放在( ...

  6. Failed to initialize connector [Connector[HTTP/1.1-443]]

    Failed to initialize connector [Connector[HTTP/1.1-443]] 出现如上错误时,是因为443端口被占用, 所以tomcat的https协议无法使用, ...

  7. [MST] Use Volatile State and Lifecycle Methods to Manage Private State

    MST has a pretty unique feature: It allows you to capture private state on models, and manage this s ...

  8. Android中的AsyncTask异步任务的简单实例

    在 Android中的AsyncTask异步任务的简介 一文中.已经对 安卓 异步任务操作做了简单的介绍.这里,直接将上文中的异步任务做了一个实例.实现异步操作更新UI线程,相比开启子线程更新来说逻辑 ...

  9. MySql基础总结(1)

    对于MySql已经是第二次看了,这次基本的目的是将MySql系统的归纳一边,之前学MySql是将笔记写在本子上,以后不想总带着本子,所以再花点时间把笔记归纳在博客中. 下午已将安装步骤具体的写了.如今 ...

  10. String build-in function - len

    len is a build-in function that returns the numbers of characters in a string: Since we started coun ...