Android事件分发机制
2019-03-16 本文已影响19人
12313凯皇
最近在准备面试,Android事件分发机制算是一个常考点了,于是准备好好的了解一下。因为找到了一篇很全面且详细的文章,且整个分发机制比较复杂,所以本文中仅记录一些知识点。
推荐阅读:Android事件分发机制详解:史上最全面、最易懂
- 事件类型(4种)
事件类型 | 具体动作 |
---|---|
MotionEvent.ACTION_DOWN | 按下View(所有事件的开始) |
MotionEvent.ACTION_UP | 抬起View(与DOWN对应) |
MotionEvent.ACTION_MOVE | 滑动View |
MotionEvent.ACTION_CANCEL | 结束事件(非人为原因) |
-
事件列
从手指接触屏幕 至 手指离开屏幕,这个过程所产生的一系列事件。
一般情况下,事件列都是以DOWN
事件开始,UP
事件结束,中间又n个MOVE
事件。
-
事件分发顺序
Activity
-->ViewGroup
-->View
。
Activity.getWindow().superDispatchTouchEvent(ev)
传递给ViewGroup
ViewGroup
中先判断是否拦截,然后遍历子View
并传递。 -
具体流程图(源于推荐阅读文章):
-
方法总结: