整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制。
这个触摸事件就是从外层往内层一层层的传递。
整个传递机制,分为3个步骤:分发,拦截,和消费。
1. 触摸事件的类型
事件类型是MotionEvent类:看下最新的sdk29的源码,一堆的Action,我们常用的其实就3个,ACTION_DOWN,ACTION_MOVE,ACTION_UP。
Down和Up事件,是触摸过程中一定会发生的事件。Move事件看具体的情况。
2.事件传递的顺序
从外层往内层一层层的传递,外层是那个,内层是那个?
我们从android系统的角度看。事件首先传给的肯定是Activity,因为Activity的UI布局,事物逻辑,作为底层来说,不知道,也并不关心。
所以只要把事件送到Activity层,就可以。
同样的道理,事件先送到ViewGroup,然后在送到View。这样从外层到内层的过程。
其实每一层都会对触摸事件有响应,这个事件是有具体的业务逻辑决定的,所以我们需要一些操作来控制这个事件的过程。
比如点击事件,假设点击了某个按钮,这样它的父ViewGroup要不要处理,页面要不要处理,从表面来看他们都被点击了,从实际人们的经验来看,
就是View被点击了,不需要ViewGroup和Activtiy后面2个事件触发。
Activity->ViewGroup->ViewGroup...->View 整个事件流程传递就是这样。