在上一篇博文中。我主要解说了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

最新文章

  1. google-analytics的使用: 解析页面引入代码
  2. info.plist、pch和四大对象(UIApplication、UIApplicationDelegate、UIWindow、UIViewController)
  3. KindEditor用法介绍
  4. 解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题
  5. Codeforces Round #273 (Div. 2)
  6. WITH AS and materialize hints
  7. left join 、right join 、inner join和 full join的区别
  8. Php开发完全跨站点跨域名单点(SSO)同步登录和注销
  9. MySQL游标操作指南
  10. Top k问题(线性时间选择算法)
  11. EzHttp 使用Https协议时证书如何部署
  12. vue2.0之render函数
  13. MFC中ComboBox控件用法
  14. Entity Framework Code First 学习日记(1)精
  15. vue-awesome-swiper组件不能自动播放和导航器小圆点不显示问题
  16. 熔断监控集群(Turbine)
  17. Python 处理JSON数据报错解决办法
  18. memcache命令
  19. process_创建进程
  20. Batch Norm、Layer Norm、Weight Norm与SELU

热门文章

  1. 浏览器 滚动条 占据 y轴宽度的解决方案
  2. [HAOI2016]找相同字符(SAM+DP)
  3. PageUtil
  4. Ubuntu16.04 lnmp 环境搭建
  5. Python排序 插入排序
  6. TreeMap集合怎样依照Value进行排序
  7. 编写SDR SDRAM页突发模式控制器的注意点
  8. Java多线程理解:线程安全的集合对象
  9. pandas groupby 分组操作
  10. 可变对象 vs 不可变对象(Python)