1.
事件分发的对象是Touch事件,当用户触摸屏幕时(View
或 ViewGroup
派生的控件),将产生点击事件(Touch
事件)
2. 事件类型:
1> MotionEvent.ACTION_DOWN
按下View(所有事件的开始)
2> MotionEvent.ACTION_UP
抬起View(与DOWN对应)
3> MotionEvent.ACTION_MOVE
滑动View
4> MotionEvent.ACTION_CANCEL 结束事件(非人为原因)
3. 事件列: 从手指接触屏幕 至
手指离开屏幕,这个过程产生的一系列事件.一般情况下,事件列都是以
DOWN
事件开始、UP
事件结束,中间有无数的MOVE事件4. 事件分发的本质: 将点击事件(MotionEvent)传递到某个具体的
View
&
处理的整个过程5. 事件在哪些对象之间进行传递?
Activity、ViewGroup、View
事件传递的顺序:
Activity
-> ViewGroup
-> View
6. 事件分发过程由哪些方法协作完成?
dispatchTouchEvent()
、onInterceptTouchEvent()和onTouchEvent()
点击事件产生后,步骤1:调用dispatchTouchEvent()
步骤2:调用onInterceptTouchEvent()判断是否拦截事件
a. 若拦截,则将该事件交给当前View进行处理
即调用onTouchEvent
()方法去处理点击事件 b. 若不拦截,则将该事件传递到下层,即
下层元素的dispatchTouchEvent()就会被调用,
重复上述过程,直到点击事件被最终处理为止
步骤3:最终返回通知
该事件是否被消费(接收 & 处理)