一、事件分发的对象是谁
答:点击事件(Touch事件)
-
定义
当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件。Touch事件的相关细节(发生触摸的位置。时间等)被封装成MotionEvent对象 -
事件类型(4种)
事件类型 | 具体动作 |
---|---|
MotionEvent.ACTION_DOWN | 按下View(所有事件的起点) |
MotionEvent.ACTION_UP | 抬起View(与Down相对应) |
MotionEvent.ACTION_MOVE | 滑动View |
MotionEvent.ACTION_CANCEL | 结束事件(非人为结束) |
- 事件列
从手指解除屏幕至手指离开屏幕,这个过程产生的一系列事件。
即当一个点击事件(MotionEvent)产生后,系统需把这个事件传递一个具体的View去处理。
二、事件分发的本质
答:将点击事件(MotionEvent)传递到某个具体的View并且处理整个过程。即事件传递的过程 = 分发过程。
三、事件在哪些对象之间进行传递
答:Activity、ViewGroup、View
四、事件分发的顺序
答:Activity -> ViewGroup -> View。即一个点击事件发生后,事件先传到Activity、再传到ViewGroup、最终传到View。
五、事件分发过程由哪些方法协作完成?
答:
方法 | 作用 | 调用时刻 |
---|---|---|
dispatchTouchEvent() | 分发(传递)点击事件 | 当点击事件能够传递给当前View时,该方法就会被调用 |
onTouchEvent() | 处理点击事件 | 在dispatchTouchEvent()方法内部调用 |
onInterceptTouchEvent() | 判断是否拦截了某个事件,只存在于ViewGroup中,普通的View没有该方法 | 在ViewGroup的dispatchTouchEvent()内部调用 |