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时所使用的背景图  

  • 当视图重绘时,会根据当前不同的状态选择不同的绘制背景图

      

posted on 2015-02-28 17:33  ZerrO  阅读(86)  评论(0)    收藏  举报

导航