Activity的绘制流程在onResume之后开始,切入点是ViewRootImpl类的performTraversals方法
View的绘制流程是measure,layout,draw
ViewGroup在绘制过程中会先遍历子View然后才会绘制自身,例如先遍历measure子View,然后再计算出自身的尺寸。
measure 测量大小 SpecMode分为三种 EXACTLY AT_MOST UNSPECIFIED
layout 在父布局中的位置
draw 绘制 invalidate() postInvalidate() postInvalidateDelayed(long delayMilliseconds) 这三个方法都有一个重载版本,接受(int l, int t, int r, int b)这么一组参数 -- 部分重绘
、
ndroid事件分发机制
三个重要角色
1、Activity:接收Down点击事件,传递给Phonewindow和DecorView
2、ViewGroup:拦截事件,或者继续传递给子View
3、View:决定消费这个事件或者不消费从而返回给上一级
三个核心事件
1、dispatchTouchEvent():分发点击事件,return false 事件停止往子View传递和分发 触发自身 onTouchEvent
2、onTouchEvent() : return false 是不消费事件,并让事件往父控件的方向从下往上流动。return true 是消费事件。
3、onInterceptTouchEvent():拦截点击事件, return false 不拦截,允许事件向子View传递, return true拦截事件,不在向子View传递事件。