Andrid View框架介绍
6. View树绘制的时机
6.1 View状态分类
Android中应用程序是按照消息机制执行的,每次处理一个消息,如果该消息引起状态改变,则代码中仅仅做一些状态标识,然后发送一个异步消息,而不是立即重绘。然后在下一次消息处理中,根据保存的状态数据,绘制不同的界面效果。View中和显示效果有关的状态有15种,下面列出最常见的几种:
| 状态名 | 含义 |
| enable | 是否使能,应用程序可以调用setEnableO改变该状态 |
| focused | 是否被聚焦,一个窗口中只能有一个视图拥有焦点,一般由用户交互导致,不需要应用程序直接改变 |
| pressed | 是否被按下,一般由用户交互导致,不需要应用程序直接改变 |
| selected | 是否被选择,应用程序可以调用setSelectedO改变该状态 |
| window_focused | 视图所在的窗口是否是当前交互窗口,由系统自动决定,应用程序不能改变该状态 |
说明:selected和focused的区别有以下几点:
- 一个窗口中只有一个view获得焦点(focused状态),而可以有多个view被选中(selected状态)
- 按键消息最终会传递到focused视图中,而不是selected视图中
- focused状态一般是由按键操作引起,pressed状态是由触摸消息引起,selected则完全是由应用程序主动调用setSelected()进行控制
-
focused是针对按键的,即所有的按键消息将派发给focused视图
-
pressed是针对鼠标或者触摸消息的,仅仅是当用户按下视图时给用户一个状态指示
-
而selected状态是为了程序处理之用,在一般情况下,具有selected状态的视图不会有什么界面上的变化,除非应用程序为该视图指定了 selected时所使用的背景图
-
当视图重绘时,会根据当前不同的状态选择不同的绘制背景图
浙公网安备 33010602011771号