一、android事件分发首先从 MotionEvent.ACTION_DOWN
事件开始,ACTION_DOWN
事件的分发流程如下图:
二、MotionEvent.ACTION_UP
事件分发会受到ACTION_DOWN
事件分发结果的影响。我们把ACTION_DOWN
事件中止向下分发处当作一个节点,如上图,可能的节点有6个。android事件分发具有消费机制,在这6个节点中按照消费对象来分又可以分为三类:
- 1、6对应消费者为Activity,
- 2、5对应消费者为ViewGroup,
- 3、4对应消费者为View。
通常情况下,如果一个对象消费了ACTION_DOWN
事件,android系统会认为这个对象可能也会消费ACTION_UP
事件。相对的如果一个对象没有消费ACTION_DOWN
事件,那么android系统会认为这个对象也不会消费ACTION_UP
事件,在ACTION_UP
事件传递过程中就会跳过这个对象。
以下根据这3类情况来探讨ACTION_UP
事件的分发流程。
1、ACTION_DOWN
事件被Activity消费时,ACTION_UP
的分发流程如下:
2、ACTION_DOWN
事件被ViewGroup消费时,ACTION_UP
的分发流程如下:
3、ACTION_DOWN
事件被View消费时,ACTION_UP
的分发流程如下:
测试工程稍后会放到Github上,欢迎follow