1、事件分发的“事件”
答:点击事件(Touch事件)
定义:当用户触摸屏幕时候,将产生点击事件。
具体使用:Touch事件的相关细节会被封装成MotionEvent
事件类型:
MotionEvent.ACTION_DOWN 按下View
MotionEvent.ACTION_UP 抬起View
MotionEvent.ACTION_DOWN 滑动View
MotionEvent.ACTION_CANCEL 结束事件
附:事件列,即指从手指接触屏幕至手指离开屏幕这个过程产生的一系列事件。一般情况下,事件列都是以DOWN事件开始、UP事件结束,中间有无数的MOVE事件。
2、事件分发的本质
答:将点击事件传递到某个具体的View&处理的过程
即事件传递的过程=分发过程
3、事件在哪些对象之间进行传递?
答:Activity、ViewGroup、View
Android的UI界面由Activity、ViewGroup、View 及其派生类组成。
Activity:控制生命周期、处理事件,统筹视图的添加&显示,通过其他回调方法与Windows、View交互。
View:所有UI组件的基类,一般Button、TextView等控件都是继承父类View。
ViewGroup:一组View 的集合,本身也是View的子类,是Android所有布局的父类,ViewGroup实际上也是一个View,多了个可包含子View&定义布局参数的功能。
4、事件分发的顺序
Activity—>ViewGroup—>View
5、事件分发过程由哪些方法协作完成?
答:dispatchTouchEvent(),onInterceptTouchEvent()和onTouchEvent()
作用:
(1)dispatchTouchEvent():分发传递事件,当点击事件能传给当前View时调用。
(2)onTouchEvent():处理点击事件,在dispatchTouchEvent()内部调用。
(3)onInterceptTouchEvent():判断是否拦截了某个事件在ViewGroup的dispatchTouchEvent()内部调用。
6、事件分发机制流程
(1)Android事件分发机制首先会将点击事件传递到Activity中,具体是执行dispatchTouchEvent()进行事件分发。
核心方法:主要包括dispatchTouchEvent()、onTouchEvent()
未完待续。。。