美文网首页
Android事件分发机制详解

Android事件分发机制详解

作者: Gaoit | 来源:发表于2019-08-02 18:30 被阅读0次

事件分发对象

(1)所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。

(2)事件类型分为 ACTION_DOWNACTION_UPACTION_MOVEACTION_POINTER_DOWNACTION_POINTER_UPACTION_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事件,如下图:

image

即当一个点击事件发生后,系统需要将这个事件传递给一个具体的View去处理。这个事件传递的过程就是分发过程。

(3)对事件的处理包括三类,分别:

  • 传递——dispatchTouchEvent()函数;

  • 拦截——onInterceptTouchEvent()函数

  • 消费——onTouchEvent()函数和 OnTouchListener

参考:
https://www.jianshu.com/p/38015afcdb58

https://itimetraveler.github.io/2017/11/18/%E3%80%90Android%E3%80%91%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%20-%20View%E4%BA%8B%E4%BB%B6%E5%88%86%E5%8F%91%E6%9C%BA%E5%88%B6/

相关文章

网友评论

      本文标题:Android事件分发机制详解

      本文链接:https://www.haomeiwen.com/subject/tddrdctx.html