Android资源之图像资源(状态图像资源)
2024-08-31 14:06:02
在上一篇博文中。我主要解说了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
最新文章
- google-analytics的使用: 解析页面引入代码
- info.plist、pch和四大对象(UIApplication、UIApplicationDelegate、UIWindow、UIViewController)
- KindEditor用法介绍
- 解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题
- Codeforces Round #273 (Div. 2)
- WITH AS and materialize hints
- left join 、right join 、inner join和 full join的区别
- Php开发完全跨站点跨域名单点(SSO)同步登录和注销
- MySQL游标操作指南
- Top k问题(线性时间选择算法)
- EzHttp 使用Https协议时证书如何部署
- vue2.0之render函数
- MFC中ComboBox控件用法
- Entity Framework Code First 学习日记(1)精
- vue-awesome-swiper组件不能自动播放和导航器小圆点不显示问题
- 熔断监控集群(Turbine)
- Python 处理JSON数据报错解决办法
- memcache命令
- process_创建进程
- Batch Norm、Layer Norm、Weight Norm与SELU