Android事件分发机制详解
第一次写博客,如有不满意的,请不要嘴下留情!!!
Android事件分发机制是无论面试还是开发当中都必须要了解清楚的一项知识。
1.所需了解的基础
-
答:3个,分别是:dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()。
方法 作用 dispatchTouchEvent() 事件分发 onInterceptTouchEvent() 事件拦截(只存在于ViewGroup) onTouchEvent() 事件响应 -
答:MotionEvent,用户只要触摸屏幕,就会产生MotionEvent对象,MotionEvent有4种事件类型,分别为:
事件类型 作用 MotionEvent.ACTION_DOWN 按下view(所有事件的开始) MotionEvent.ACTION_UP 抬起view(与ACTION_DOWN相对应) MotionEvent.ACTION_MOVE 滑动view MotionEvent.ACTION_CENCEL 结束事件
1.1、事件分发过程中用到了那些方法?
1.2、事件分发中所传递的对象?
2.事件分发的过程
2.1、事件分发的正常流程,如图所示:
2.2、ViewGroup的事件分发机制,如下图:
2.3、最后是View的事件分发机制,如下图:
![]()
上面的图漏了一点,当View.onTouchEvent返会false或默认时,也会调用perfromClick,perfromClick会调用onClick,从而实现View的点击事件。所以onTouch优先于onClick执行
3.最后上一张流程图总结
第一次写博客,有哪些地方不对的还请见谅,如果想要更完美的了解事件分发机制,可以查看这位大佬的文章,点击前往