事件分发机制

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()将事件消费掉了,因此事件不会再继续向下传递。
阅读更多
上一篇Handler机制
下一篇Android挑战到系统相机和相册
想对作者说点什么? 我来说一句

事件分发机制学习Demo

2017年02月11日 711KB 下载

测试Android事件分发机制的demo

2017年04月01日 75KB 下载

Android事件分发机制

2015年08月18日 5.16MB 下载

android事件分发机制

2016年12月29日 453KB 下载

View的事件分发测试例子

2016年02月25日 5.95MB 下载

android事件分发机制Demo

2016年07月14日 20.59MB 下载

TouchEvent事件分发机制详解

2017年06月19日 447KB 下载

android 时间分发机制

2016年02月19日 174KB 下载

安卓事件分发机制的回答

2017年05月14日 64KB 下载

没有更多推荐了,返回首页

关闭
关闭