上篇我们讲了事件分发的基础点,可以看出所有的事件分发流程都是基于事件分发过程和事件消费过程来处理的。这篇我们将深入了解事件是怎么传递和消费的。
从上篇我们知道,事件传递是从Activity开始的,当我们点击Activity时,系统会调用Activity的dispatchTouchEvent方法进行事件的传递。那这个方法都干了啥呢?
Activity的事件分发:
Activity的dispatchTouchEvent源码是这样的:
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
onUserInteraction();
}
if (getWindow().superDispatchTouchEvent(ev)) {
return true;
}
return onTouchEvent(ev);
}
短短几行代码,都干了啥?我们分析一下。
1.首先,判断一下是不是按下,这个毫无疑问,肯定是按下了,那么就会进入onUserInteraction()方法。这个方法干嘛的?我们去看一下
public void onUserInteraction() {}
空方法,什么都不做。那它能干嘛呢?其实这个方法是在用户与设备交互时被调用,比如按Home键,Back键。那如果你有与设备交互的其他需求是不是就能在这里实现了。、、
2.getWindow().superDispatchTouchEvent(ev)方