android手持设备selector多种状态编写
来源:互联网 发布:超级山猫直升机数据 编辑:程序博客网 时间:2024/05/03 08:04
android手持设备selector多种状态编写
年底了,最近一直忙着公司新产品的开发。说好的每个月至少发一篇的博文目标也没有做到,惭愧。因为这次是根据一款手持设备做app开发,遇到了自己以前只做触摸手机开发没有遇到的一些问题。本文主要是记录自己编写的 selector xml 文件。
- 1.手持设备靓照
- 2.触摸手机selector文件编写
- 3.手持设备selector文件编写
- 4.手持设备listview item selector文件编写
- 5.RadioGroup中RadioButton selector文件编写
- 6.总结
1.手持设备靓照
(1)第一款手持设备
(2)第二款手持设备
上面两张图片就是我目前使用到的两款手持设备。目前只针对第一张图片的设备做适配,所以第二张图片中的app布局暂时有点不规范,后面将会针对第二款设备进行适配工作。
2.触摸手机selector文件编写
在我们全触摸屏幕手机中常用的selector形式主要有两种:
1.包含两种状态,按下状态与普通状态;
2.包含三种状态,不可点击状态、当满足条件时可点击状态、当满足条件时按下状态;
<!-- 两种 按键效果--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/normal" android:state_pressed="false"/> <item android:drawable="@drawable/pressed" android:state_pressed="true"/></selector>
<!-- 三种 按键效果--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/n" android:state_enabled="false"/> <item android:drawable="@drawable/y" android:state_enabled="true" android:state_pressed="false"/> <item android:drawable="@drawable/p" android:state_enabled="true" android:state_pressed="true"/></selector>
我们平时在全触摸手机中常用的selector就是以上两种,android:drawable=”“可以用图片素材,也可以用颜色值。android:state_enabled这个属性对应的是按键能否点击与不可点击,我们可以在控件的属性中定义,以可以用代码控制。
3.手持设备selector文件编写
在绝大多数的手持设备中均带有键盘,公司业务的要求整个app的操作几乎完全能用键盘操作。所以我在编写文件的时不仅要考虑到手直接触摸屏幕时selector状态的变化还要考虑到通过键盘移动时屏幕焦点的变化。在我使用到的第一款手持设备中,通过按键进入页面时焦点默认在屏幕的左上角。
注意
一:前提是在你的xml文件和代码中没有设置某个view获取焦点;
二:一个view能否获取焦点主要是看focusable属性,该属性可以通过xml和代码设置;
三:Button和EditText等默认是可以获取焦点,TextView和ImageView和RelativeLayout等默认是不可以获取焦点;
这里我使用到了两种类别的selector在手持设备中。
(1) 包含了通过键盘移动焦点时view的背景变化和通过屏幕触摸时view背景的变化;
(2)包含了通过键盘移动有焦点时和无焦点时view在被选中与未被选中的背景变化和通过屏幕触摸与否时view在选中与未被选中的背景变化;
<!-- 第一种类型 按键效果--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/pw" android:state_focused="true" android:state_pressed="true"/> <item android:drawable="@drawable/pw" android:state_focused="true" android:state_pressed="false"/> <item android:drawable="@drawable/pw" android:state_focused="false" android:state_pressed="true"/> <item android:drawable="@drawable/bw" android:state_focused="false" android:state_pressed="false"/></selector>
<!-- 第二种类型 按键效果--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ps" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/> <item android:drawable="@drawable/op" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/fb" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> <item android:drawable="@drawable/bw" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/ps" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> <item android:drawable="@drawable/op" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/ps" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/> <item android:drawable="@drawable/op" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/></selector>
注意
在对Button使用android:state_selected属性时只能通过代码进行控制;
4.手持设备listview item selector文件编写
在android设备中listview有自带的selector状态,这种状态在手持设备中默认能使用,但是因为业务需求需要改变这种样式,所以就需要我们自定义listview item的 selector样式。
下面是实现 listview item selector样式的两种方式:
第一种:
<!-- 第一种类型 按键效果--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 没有焦点时的背景图片 --> <item android:drawable="@drawable/tt"android:state_window_focused="false"/> <!-- 非触摸模式下获得焦点并单击时的背景图片 --> <item android:drawable="@drawable/pt"android:state_focused="true"android:state_pressed="true"/> <!-- 触摸模式下单击时的背景图片--> <item android:drawable="@drawable/pt"android:state_focused="false"android:state_pressed="true"/> <!--选中时的图片背景--> <item android:drawable="@drawable/pt"android:state_selected="true"/> <!--获得焦点时的图片背景--> <item android:drawable="@drawable/pt"android:state_focused="true"/> <!-- 默认时的背景图片--> <item android:drawable="@drawable/tt"/></selector>
这种方式是通过搜索查询到的,我最初就用的这种方式,我当时遵循了典型的“拿来主义”,为了完成任务进度就没有多加思考。其实通过仔细思考我发现可以用第3点 手持设备selector文件编写中的第二种类型。
于是我将第3点中的第二种类型来替换,效果完全一样!
第二种:
请参考第3点中第二种类型。
5.RadioGroup中RadioButton selector文件编写
现在用RadioGroup中包含RadioButton来做菜单选项卡的方式很常见。当然以可以用LinearLayout中包含ImageView和TextView的方式,只不过这种方式不规范,不推荐使用。
对RadioButton的selector文件编写分为两部分:
(1)对android:drawableTo 的selector文件编写;
(2)对textColor的selector文件编写;
<!-- 对android:drawableTo 的selector文件编写--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/tn" android:state_checked="false"/> <item android:drawable="@drawable/tf" android:state_checked="true"/></selector>
<!-- 对textColor的selector文件编写--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/text" android:state_checked="false"/> <item android:color="@color/text_blue" android:state_checked="true"/></selector>
注意
textColor的selector文件放在res/color文件夹下;
6.总结
android selector中可用的属性还有很多,有待我去发现。上面只是罗列出了部分属性组合而成的selector,以后会去尝试更多的组合。
Talk is cheap , show me your code !
本人才疏学浅,出错在所难免。如文中有错误的地方望指正,谢谢!
欢迎关注我的Github账号:https://github.com/tuzhao
- android手持设备selector多种状态编写
- Unity3d 检测手持设备网络状态
- 如何编写高效的手持设备程序代码
- 手持机设备公司(WINCE/ANDROID/LINUX)
- Android selector 状态选择器
- Android selector 状态选择器
- Android 通过selector改变状态
- Android 状态选择器State Selector
- Android 01 selector状态选择器
- 继续"深入浅出Android--Google手持设备应用程序设计"
- 深入浅出Android--Google手持设备应用程序设计-摘要
- 手持设备续航能力
- 在Android手持设备与穿戴设备之间通过蓝牙传递assert(如图片)
- Android通过selector改变界面状态
- Android通过selector改变界面状态
- android 控件不同状态 selector----drawable
- android设置圆形 带selector状态按钮
- android selector 中的几个关键状态
- Android studio 没有SDK location设置选项
- vijos-p1440 2008.11.9
- SSH进阶(3)——Struts2原理介绍及环境搭建
- vijos-p1334 2008.11.9
- 聊天通信代码
- android手持设备selector多种状态编写
- vijos-p1439 2008.11.9
- CocoaPods 创建Podfile 导入第三方库 详细全程图文指导
- linux命令行下如何以目录树的形式显示一个文件夹的所有文件
- vijos-p1361 2008.11.9
- android 资源种类及使用
- 数字时代的BES:从业务支撑转向商业使能
- vijos-p1323 2008.11.9
- BZOJ2333