1.1 事件分发的对象是谁?
点击事件(Touch事件)
·定义
当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事件(Touch事件)
Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象
·事件类型(4种)
事件类型 具体动作
MotionEvent.ACTION_DOWN 按下View(所有事件的开始)
MotionEvent.ACTION_UP 抬起View(与DOWN对应)
MotionEvent.ACTION_MOVE 滑动View
MotionEvent.ACTION_CANCEL 结束事件(非人为原因)
·从手指接触屏幕 至 手指离开屏幕,这个过程产生的一系列事件
1.2 事件分发的本质
答:将点击事件(MotionEvent)传递到某个具体的View处理的整个过程
1.3 事件在哪些对象之间进行传递?
答:Activity、ViewGroup、View
1.4 事件分发的顺序
即 事件传递的顺序:Activity -> ViewGroup -> View
1.5 事件分发过程由哪些方法协作完成?
答:dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()
dispatchTouchEvent:
作用:分发(传递)点击事件
调用时刻:当点击事件能够传递给当前View时,该方法就会被调用。
onInterceptTouchEvent:
作用:判断是否拦截了某个事件
调用时刻:在ViewGroup的dispatchTouchEvent()内部调用。
onTouchEvent():
作用:处理点击事件
调用时刻:在dispatchTouchEvent内部调用。
点击Button时,执行Button.onClick(),但ViewGroupLayout注册的onTouch()不会执行
只有点击空白区域时,才会执行ViewGroupLayout的onTouch()
结论:Button的onClick()将事件消费掉了,因此事件不会再继续向下传递。
点击事件(Touch事件)
·定义
当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事件(Touch事件)
Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象
·事件类型(4种)
事件类型 具体动作
MotionEvent.ACTION_DOWN 按下View(所有事件的开始)
MotionEvent.ACTION_UP 抬起View(与DOWN对应)
MotionEvent.ACTION_MOVE 滑动View
MotionEvent.ACTION_CANCEL 结束事件(非人为原因)
·从手指接触屏幕 至 手指离开屏幕,这个过程产生的一系列事件
1.2 事件分发的本质
答:将点击事件(MotionEvent)传递到某个具体的View处理的整个过程
1.3 事件在哪些对象之间进行传递?
答:Activity、ViewGroup、View
1.4 事件分发的顺序
即 事件传递的顺序:Activity -> ViewGroup -> View
1.5 事件分发过程由哪些方法协作完成?
答:dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()
dispatchTouchEvent:
作用:分发(传递)点击事件
调用时刻:当点击事件能够传递给当前View时,该方法就会被调用。
onInterceptTouchEvent:
作用:判断是否拦截了某个事件
调用时刻:在ViewGroup的dispatchTouchEvent()内部调用。
onTouchEvent():
作用:处理点击事件
调用时刻:在dispatchTouchEvent内部调用。
点击Button时,执行Button.onClick(),但ViewGroupLayout注册的onTouch()不会执行
只有点击空白区域时,才会执行ViewGroupLayout的onTouch()
结论:Button的onClick()将事件消费掉了,因此事件不会再继续向下传递。