今天弄这个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. HBase Shell手动移动Region

    在生产环境中很有可能有那么几个Region比较大,但是都运行在同一个Regionserver中. 这个时候就需要手动将region移动到负载低的Regionserver中. 步骤: 1.找到要移动的r ...

  2. lamda表达式相关知识

    lamda表达式写法 dt = datado.SelectDalMeath(sqlStr.ToString()); var x = (from r in dt.AsEnumerable() selec ...

  3. My97DatePicker的calendar.js的反混淆

    eval(string)函数 <script> eval(function(p, a, c, k, e, d) { p = 'function p(){console.log(" ...

  4. STC-ISP下载过程

  5. Local host name unknown: java.net.UnknownHostException:

    在Linux下安装完resin后,每次启动都出现如下错误: [11:06:45.617] {watchdog-} WatchdogProcess[Watchdog[],7] starting Resi ...

  6. HDU 5768 Lucky7 (中国剩余定理+容斥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5768 给你n个同余方程组,然后给你l,r,问你l,r中有多少数%7=0且%ai != bi. 比较明显 ...

  7. HDU1874畅通工程续(floyd||dijkstra)

    看了看floyd和dijkstra,然后就找了两个练习来捉 #include<iostream> #include<stdio.h> #include<string.h& ...

  8. Nuget~让包包带上自己的配置信息

    我们知道一般开发组件之后,组件都有相关配置项,最常见的作法就是把它写到web.config里,而如果你将这个文件直接放到nuget里打包,在进行安装包包时,会提示你这个文件已经存在,不能去覆盖原来的c ...

  9. PostgreSQL的 initdb 源代码分析之二十

    继续分析: setup_privileges(); 展开: 这是设置权限. 其cmd是:"/home/pgsql/project/bin/postgres" --single -F ...

  10. UML Distilled - Development Process

    Iterative(迭代) and Waterfall(瀑布) Processes One of the biggest debates about process is that between w ...