Android 事件分发流程

2020-04-22  本文已影响0人  搬砖写Bug

触摸事件分发

DecorView.java

public boolean dispatchTouchEvent(MotionEvent ev) {
    final Window.Callback cb = mWindow.getCallback();
    return cb != null && !mWindow.isDestroyed() && mFeatureId < 0 ? cb.dispatchTouchEvent(ev) : super.dispatchTouchEvent(ev);
}

这里的Window.Callback其实就是Activity:

public class Activity extends ContextThemeWrapper implements Window.Callback,...{
即回调到Activity.dispatchTouchEvent()

20180902180141189.png dispatch.png

总结:收到了ACTION_DOWN,就会收到 ACTION_MOVE、ACTION_UP 等后续的事件的前提条件就是必须消费该事件,也就是返回true。如果仅仅是在ACTION_DOWN返回true,其他事件返回super,则其他事件没被消费,会继续向上回溯,但是一定会经过消费控件本身

Android触摸事件全过程分析:由产生到Activity.dispatchTouchEvent() - 简书

[图片上传失败...(image-b8ca09-1587094097878)]

View事件传递机制源码走查 - 简书

[图片上传失败...(image-9d8e0-1587094097878)]

Android触摸事件分发机制详解_移动开发_Water的博客-CSDN博客

[图片上传失败...(image-4dd20e-1587094097878)]

susion哒哒 - 简书

[图片上传失败...(image-488e80-1587094097878)]

Android Binder 机制 - 简书

[图片上传失败...(image-4f849a-1587094097878)]

一文了解Android中路由(Router)的实现 - 简书

[图片上传失败...(image-362ce-1587094097878)]

一个用来巩固android基础的APP - 简书

[图片上传失败...(image-18f9a1-1587094097878)]

Android 触摸事件分发机制(一)从内核到应用 一切的开始 | viseator's blog

[图片上传失败...(image-552505-1587094097878)]

归档 | viseator's blog

[图片上传失败...(image-b6fc91-1587094097878)]

Android 消息机制(一)消息队列的创建与循环的开始 Looper与MessageQueue | viseator's blog

[图片上传失败...(image-120745-1587094097877)]

Android 触摸事件分发机制(三)View触摸事件分发机制 | viseator's blog

[图片上传失败...(image-46fb2e-1587094097877)]

Input系统—事件处理全过程 - Gityuan博客 | 袁辉辉的技术博客

[图片上传失败...(image-e47786-1587094097877)]

Input系统—UI线程 - Gityuan博客 | 袁辉辉的技术博客

[图片上传失败...(image-ccc589-1587094097877)]

dispatchTouchEvent_百度搜索

[图片上传失败...(image-667833-1587094097877)]

dispatchTouchEvent事件分发浅析(二)分发 - 云+社区 - 腾讯云

[图片上传失败...(image-32d88f-1587094097877)]

dispatchTouchEvent事件分发浅析(四)Intercept拦截 - 云+社区 - 腾讯云

上一篇下一篇

猜你喜欢

热点阅读