View.requestFocus() 先更要让某个视图获得焦点,一种犯法是用户使用物理方向键将焦点移动到该视图,另一种方法是程序员直接调用View.requestFocus()。 requestFocus()也是不能独自完成的,当一个视图想要获取焦点时,必须请求它的父视图来完成该操作。因为父视图知道当前哪个视图正在拥有焦点,如果要进行焦点的切换,则必须要先告诉原先的视图放弃焦点,而这些操作所需要的信息正是父视图中保存的,所以requestFocus()也必须由父视图来完成。 requestFocus():空参,它…

2016年7月4日 0条评论 6点热度 阅读全文

该函数的作用是请求View树进行重绘,当应用程序需要重绘某个视图时,可以调用该函数。视图极其父视图在界面上是分层先后显示的。 绘制的流程中,首先绘制最底层的根视图,然后再绘制其他的子视图。子视图或者是一个ViewGroup,或者是一个View。 如果是ViewGroup的话,则继续再绘制ViewGroup内部的子视图,绘制过程一般不会对所有视图进行重绘,而仅绘制那些“需要重绘”的视图,也就是mPrivateFlags中包含一个标志位为DRAWN的视图,当该视图需要绘制时,就给mPrivateFlags中添加该标志位…

2016年7月4日 0条评论 7点热度 阅读全文

View.setSelected() 下载VSDX   /**      * Changes the selection state of this view. A view can be selected or not.      * 改变该视图的选择项状态。一个视图能被选中或者不被选中两种状态。      *       * Note that selection is n…

2016年7月4日 0条评论 5点热度 阅读全文

View.setVisibility 该函数用于改变视图的可视状态,可视状态包括GONE、VISIBLE、INVISIBLE三种。该函数内部很简单,首先调用setFlags(),然后调用mBGDrawable.setVisible()函数来改变视图背景图的显示状态。 点我下载VSDX View.setVisibility(int visibility)  /**      * Set the enabled state of this view.     …

2016年7月4日 0条评论 3点热度 阅读全文

View.refreshDrawableState() 该函数的作用是根据标识,为视图赋予不同的Drawable对象。 点击下载vsdx public void refreshDrawableState() {           //该mPrivateFlags添加PFLAG_DRAWABLE_STATE_DIRTY标识,该标识仅在后面调用的drawableStateChanged函数中用于判断是否发生状态变化。       &nbs…

2016年7月4日 0条评论 6点热度 阅读全文

根View内部消息派发过程 在 PhoneWindow.DecorView 中,首先判断是否存在 Callback 对象,它和按键消息派发时的Callback对象一样,就是Activity类。如果没有Callback对象,则直接调用 DecorView 基类的 ViewGoup 中的 dispatchTouchEvent()函数。 Activity.dispatchTouchEvent()的过程 1. 如果是ACTION_DOWN消息,则调用 onUserInteracction(),给应用程序一个机会,以便在消息…

2016年7月4日 0条评论 3点热度 阅读全文