这是我参与「第四届青训营 」笔记创作活动的第9天
事件的定义
定义:当用户触摸屏幕时。将产生的触摸行为(Touch事件)
-
事件的类型,有四种
MotionEvent.ACTION_DOWN 手指刚接触屏幕 MotionEvent.ACTION_UP 手指从屏幕松开 MotionEvent.ACTION_MOVE 手指在屏幕上滑动 MotionEvent.ACTION_CANCEL 非人为因素取消
事件序列
正常情况下,一次手指触摸屏幕的行为会发出一些列点击事件
1.点击屏幕立即松开,事件序列化为DOWN->UP
2.点击屏幕滑动一会再松开,事件序列为DOWN->MOVE->...->MOVE->UP
事件分发对象
事件分发主要方法
事件分发-Activity
事件分发——ViewGroup
事件分发-View
View的事件分发
View的事件消费
事件分发模型
事件分发结论
- 一个事件序列从手指接触屏幕到手指离开屏幕,在这个过程中产生一系列事件,以DOWN事件开始,中间含有不定数的MOVE事件,以UP事件结束
- 正常情况下,一个事件序列只能被一个View拦截并且消耗
- 某个View一旦决定拦截,那么这个事件序列都将由它的onTouchEvent处理,并且它de onInterceptTouchEvent不会再调用
- 某个View一旦开始处理事件,如果它不消耗ACTION——DOWN事件(onTouchEvent返回false),那么同一事件序列中其他事件都不会再交给它处理。并且重新交由它的父元素处理(父元素onTouchEvent被调用)
- 事件的传递过程是由外向内的,即事件总是先传递给父元素,然后由父元素分发给子View,通过requestDisallowInterceptTouchEvent方法课在子View中干预父元素的事件分发过程,但ACTION——DOWN除外