今天弄这个selector把脑壳弄得清痛,最终我的理解如下:

官方关于这个的介绍在:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

先复制一个样例:

个字节来保存,依次每个字节是A8个字节,R8个字节,G8个字节,B8个字节,来保存,而RGB_565它只用了两个字节来保存颜色,两个字节总共16位,前5位保存R,中间6位保存G,后5位保存B.因此呀,如果android系统的点显示到屏幕上,还得转换一下,在这里这个dither就起作用了,

如果我们把它设置为true的话,那显示的时候屏幕间断的取点,这样的结果,有的时候看上去就有那种分层的感觉,也就是前面一部分的颜色与后面一部分的颜色感觉断层了,就是很不平滑的感觉,如果我们这里设置为true的话,默认就是true,android系统,它会在取的点之间再经过一些计算,在其间补充一点相间的颜色使看起来比较平滑,但这样和真的图片还是有差异的,因些有的人想要得到很逼真的显示,这里就得自己来计算了,自己来计算,即占内存又占cpu,但颜色可以很逼真,如果有这样的需求那这里就要把这个属性设置为false

以上才有的,这个是当光标移动到某一个组件之上的时候的状态,到目前为止,还没有看见过哪个手机设备带有鼠标之类的东西,可能这个专门是为平板电脑设置的或者以后可能出现带有鼠标之类的设备而准备的吧,文档中说,一般这个值设置为与focused这个值一样。

android:state_selected=["true" | "false"]

这个是当一个tab被打开的状态。或者一个listView等里面一个item被选择的时候的状态,因此这个属性设置在一般的组件上面是没有用的,只有设置有作为tab或item的布局里面的项时,这个属才起作用.

android:state_checkable=["true" | "false"]

这个是当一个组件在可以checked或不可以checked的时候的状态,现在较常见的,能够checkable的组件有,单选项和多选项,所以这个属性只有设置在像这类组件上面才有作用的。

android:state_checked=["true" | "false"]

这个是当一个组件被checked 或者没有checked 的时候的状态,也就是说只有在可checkable上面的组件才有作用的,一般常见的就是多选按钮组与单选按钮组里面的项,这个才有作用的。

android:state_enabled=["true" | "false"]

这个是当一个组件是否能处理touch或click事件的时候的状态,如果要对组件能否响应事件设置不同背景的时候,就要靠这个属性了.

android:state_window_focused=["true" | "false"]

这个是是否对当前界面是否得到焦点的两种状态的设置,比如说当我们打开一个界面,那么这个界面就获得了焦点,如果我们去把“通知”拉下来,那么这个界面就失去焦点,或者弹出了一个对话框,那么这个界面也失去焦点了。

最后文档特别提醒:系统是从上往下匹配的,如果匹配到一个item那么它就将采用这个item,而不是采用的最佳匹配的规则,所以设置缺省的状态,一定要写在最后,很多人为了保险起见,一开始就把缺省的写好,那么这样后面所有的item就都不会起作用了,还会因此找不着哪里出了问题。

Selector中的各种状态详解的更多相关文章

  1. java中线程的状态详解

    一.线程的五种状态   线程的生命周期可以大致分为5种,但这种说法是比较旧的一种说法,有点过时了,或者更确切的来说,这是操作系统的说法,而不是java的说法.但对下面所说的六种状态的理解有所帮助,所以 ...

  2. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  3. Objective-C中 Self和 Super详解

    Objective-C中 Self和 Super详解 Objective-C 中Self 和 Super 详解本文要介绍的内容,在 Objective-C 中的类实现中经常看到这两个关键字 self  ...

  4. (转)iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    原文:http://blog.csdn.net/totogo2010/article/details/8048652 iOS应用程序生命周期(前后台切换,应用的各种状态)详解         分类:  ...

  5. Oracle Statspack报告中各项指标含义详解~~学习性能必看!!!

    Oracle Statspack报告中各项指标含义详解~~学习性能必看!!! Data Buffer Hit Ratio#<#90# 数据块在数据缓冲区中的命中率,通常应该在90%以上,否则考虑 ...

  6. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  7. Android中的windowSoftInputMode属性详解

    这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下     在前面的一篇文章中 ...

  8. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  9. [转]hibernate三种状态详解

    本文来自 http://blog.sina.com.cn/u/2924525911 hibernate 三种状态详解 (2013-04-15 21:24:23) 转载▼   分类: hibernate ...

随机推荐

  1. 用Intellij Idea创建简单的Servlet

    Servlet作为Java服务端程序,使用起来还是挺方便的,下面是具体配置过程,我用的是Intellij Idea. 1. 做好必要准备,Intellij Idea(或者Eclipse for J2E ...

  2. 优秀android开源项目与解决方案推荐

    后来加上的,因为太强大了,android上百个可立即使用的开源库介绍:https://github.com/Trinea/android-open-project Android上的FTP服务器  S ...

  3. Standalone Django scripts

    Standalone Django scripts DJANGO_SETTINGS_MODULE=foo.settings

  4. HDU 5794 A Simple Chess (容斥+DP+Lucas)

    A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...

  5. Python多线程学习资料1

    一.Python中的线程使用: Python中使用线程有两种方式:函数或者用类来包装线程对象. 1.  函数式:调用thread模块中的start_new_thread()函数来产生新线程.如下例: ...

  6. ASP.NET MVC中Session以及处理方式

    转载原地址 http://www.cnblogs.com/darrenji/p/3951065.html

  7. HDU 1150 Machine Schedule (二分图最小点覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两个机器a和b,分别有n个模式和m个模式.下面有k个任务,每个任务需要a的一个模式或者b的一个 ...

  8. nm命令详解

    nm在linux中列出目标文件的符号清单,常用来查看动态链接库中的函数 nm支持的选项如下 -a   按照man手册,仅列出调试信息,实际上却是调试信息+正常信息 -A   增加一列显示目标文件,没有 ...

  9. arcmap+vs2010

    esri为vs2010提供了addin开发模版,有几个关键的地方注意下 1.C:\Program Files (x86)\MSBuild\Esri\下存在ESRI.ArcGIS.AddIns.Serv ...

  10. LinkedList类

    LinkedList类 LinkedList类和ArrayList,Vector基本相同,都有增.删.改.查等方法.LinkedList是继承List接口. import java.util.*; p ...