Android状态系统——View状态设计
来源:互联网 发布:java大视频断点续传 编辑:程序博客网 时间:2024/09/21 11:15
大家在安卓开发中可能会一直有个疑问,android中selector工作原理是什么?为什么View设置selector背景后,View就能响应selector中设置了各种状态? 如果要自己实现一个Drawable也能响应View的各种状态,需要怎么做?
要回答这些问题,需要深入理解安卓的状态系统。从今天开始,我们会带领大家逐步深入理解安卓的状态设计,直到能够回答我们所有对于状态的疑问。
首先,我们来认识一下View的状态,在View类中,状态的定义如下:
static final int VIEW_STATE_WINDOW_FOCUSED = 1;static final int VIEW_STATE_SELECTED = 1 << 1;static final int VIEW_STATE_FOCUSED = 1 << 2;static final int VIEW_STATE_ENABLED = 1 << 3;static final int VIEW_STATE_PRESSED = 1 << 4;static final int VIEW_STATE_ACTIVATED = 1 << 5;static final int VIEW_STATE_ACCELERATED = 1 << 6;static final int VIEW_STATE_HOVERED = 1 << 7;static final int VIEW_STATE_DRAG_CAN_ACCEPT = 1 << 8;static final int VIEW_STATE_DRAG_HOVERED = 1 << 9;
也就是说,在安卓的设计中,状态一共是10个,其含义分别如下:
接下来便是这些状态与Android.R.attr里的属性的对应:
static final int[] VIEW_STATE_IDS = new int[] { R.attr.state_window_focused, VIEW_STATE_WINDOW_FOCUSED , R.attr.state_selected, VIEW_STATE_SELECTED, R.attr.state_focused, VIEW_STATE_FOCUSED, R.attr.state_enabled, VIEW_STATE_ENABLED, R.attr.state_pressed, VIEW_STATE_PRESSED, R.attr.state_activated, VIEW_STATE_ACTIVATED, R.attr.state_accelerated, VIEW_STATE_ACCELERATED, R.attr.state_hovered, VIEW_STATE_HOVERED, R.attr.state_drag_can_accept, VIEW_STATE_DRAG_CAN_ACCEPT , R.attr.state_drag_hovered, VIEW_STATE_DRAG_HOVERED};
为什么要有这个对应呢?因为我们在xml布局中也经常要用到这些状态,这些状态是如何被使用的呢,请往下看:
R.attr可以在sdk/platforms/android-17/data/res/values/attrs.xml中找到,以上的属性都属于DrawableStates,以focus为例,其定义如下:
<attr name="state_focused" format="boolean" />
每一个属性都是布尔类型的,看到这里,大家一定会想起selector的写法,比如:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@drawable/btn_selected"/></selector>
android命名空间对应就是/data/res,android:state_focused对应的就是R.attr.state_focused。
说到这儿,你应该对安卓中各个状态有了初步的了解了,下一讲,我们会一起讨论一下这些状态的组合。
by 如是我聞
0 0
- Android状态系统——View状态设计
- Android状态系统——View状态设计
- Android View状态保存
- Android广播——监听系统状态
- android:view的状态保存
- android View的状态值
- android 自定义view 状态保存
- android自定义view状态保存
- 设计模式—状态模式
- 设计模式—状态模式
- 状态模式---设计任务系统
- Android与设计模式——状态(State)模式
- Android设计模式之——状态模式
- Android —— WIFI状态相关的系统广播
- 设计模式——状态设计模式
- 设计模式(状态变化)——状态模式
- 面向对象设计——系统动态模型设计(2,状态模型)
- 面向对象设计——系统动态模型设计(2,状态模型)
- 递归—北大POJ 1664 放苹果(集合划分系列,还需再看)
- Android使用UncaughtExceptionHandler捕获全局异常
- 裘宗燕:C/C++ 语言中的表达式求值
- 安装linux与分区
- 全新万能PDF转换器官方免费下载
- Android状态系统——View状态设计
- ext 在线中文api
- HDU 1505 City Game
- 基于Android/机顶盒/pc高质量视频通话及手机直播源码转让
- 在项目中实际使用log4j日志功能
- [HDOJ 2243] 考研路茫茫——单词情结 [AC自动机+动态规划+矩阵加速]
- 错误日志收集
- omnet++inetmanet安装遇阻
- Android ContentProvider 剖析。