1.主要发生的Touch事件有如下四种:

MotionEvent.ACTION_DOWN:按下View(所有事件的开始)

MotionEvent.ACTION_MOVE:滑动View

MotionEvent.ACTION_CANCEL:非人为原因结束本次事件

MotionEvent.ACTION_UP:抬起View(与DOWN对应)

2.事件分发的本质

将点击事件(MotionEvent)向某个View进行传递并最终得到处理,即当一个点击事件发生后,系统需要将这个事件传递给一个具体的View去处理。这个事件传递的过程就是分发过程。

3.事件在对象之间进行传递

 Android中的事件分机制

4.事件分发的方法

dispatchTouchEvent,它就是事件分发的重要方法,如果一个MotionEvent传递给了View,那么dispatchTouchEvent方法一定会被调用。
返回值:表示是否消费了当前事件。可能是View本身的onTouchEvent方法消费,也可能是子View的dispatchTouchEvent方法中消费。返回true表示事件被消费,本次的事件终止。返回false表示View以及子View均没有消费事件,将调用父View的onTouchEvent方法。

onInterceptTouchEvent

事件拦截,当一个ViewGroup在接到MotionEvent事件序列时候,首先会调用此方法判断是否需要拦截。特别注意,这是ViewGroup特有的方法,View并没有拦截方法。
返回值:是否拦截事件传递,返回true表示拦截了事件,那么事件将不再向下分发而是调用View本身的onTouchEvent方法。返回false表示不做拦截,事件将向下分发到子View的dispatchTouchEvent方法。
onTouchEvent

真正对MotionEvent进行处理或者说消费的方法。在dispatchTouchEvent进行调用。
返回值:返回true表示事件被消费,本次的事件终止。返回false表示事件没有被消费,将调用父View的onTouchEvent方法。

 Android中的事件分机制

相关文章:

  • 2021-09-06
  • 2021-11-17
  • 2021-04-08
  • 2021-08-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2021-07-18
  • 2021-07-08
  • 2022-12-23
相关资源
相似解决方案