事件分发对象
(1)所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。
(2)事件类型分为 ACTION_DOWN
, ACTION_UP
,ACTION_MOVE
,ACTION_POINTER_DOWN
,ACTION_POINTER_UP
, ACTION_CANCEL
,每个事件都是以 ACTION_DOWN
开始 ACTION_UP
结束。
主要发生的Touch事件有如下四种:
- MotionEvent.ACTION_DOWN:按下View(所有事件的开始)
- MotionEvent.ACTION_MOVE:滑动View
- MotionEvent.ACTION_CANCEL:非人为原因结束本次事件
- MotionEvent.ACTION_UP:抬起View(与DOWN对应)
事件列:从手指接触屏幕至手指离开屏幕,这个过程产生的一系列事件
任何事件列都是以DOWN事件开始,UP事件结束,中间有无数的MOVE事件,如下图:

即当一个点击事件发生后,系统需要将这个事件传递给一个具体的View去处理。这个事件传递的过程就是分发过程。
(3)对事件的处理包括三类,分别:
-
传递——dispatchTouchEvent()函数;
-
拦截——onInterceptTouchEvent()函数
-
消费——onTouchEvent()函数和 OnTouchListener
网友评论