Android 学习笔记(十二):安卓中的事件分发机制

一、事件分发的对象是谁

答:点击事件(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()内部调用
发布了167 篇原创文章 · 获赞 230 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_39240270/article/details/99487143