事件分发机制 activity->viewgroup->view
一般情况下,事件列都是从用户按下(ACTION_DOWN)的那一刻产生的,不得不提到,
三个非常重要的与事件相关的方法。
- dispatchTouchEvent()
- onTouchEvent()
- onInterceptTouchEvent()
Activity 的事件分发机制
activity->window(phoneWindow)->DectorView(父类是FrameLayout)->ViewGroup->View
ViewGroup 的事件分发机制
viewGoup里的dispatchTouchEvent 会调用 onInterceptTouchEvent 返回值决定是否拦截
View 的事件分发机制
dispatchTouchEvent -> onTouchEvent 这里面会判断长按,单击等回调,通过判断时间差
如何设置了OnTouchListener会调用onTouch方法
事件分发机制U形图
需要总结的小点:
1、Android 事件分发总是遵循 Activity => ViewGroup => View 的传递顺序;
2、onTouch() 执行总优先于 onClick()