Android触摸事件如何传递?

我不是在问如何处理触摸事件,而是幕后发生了什么?如果有多个嵌套的小部件,它们以什么顺序看到事件?开发者对此有控制权吗?理想情况下,我想要有关该主题的文档。



慕婉清6462132
浏览 346回答 3
3回答

GCT1015

从活动的角度来看:触摸事件首先传递到Activity.dispatchTouchEvent。在这里您可能会首先抓住它们。在这里,它们被调度到Window,并在其中遍历View层次结构,以使最后绘制的窗口小部件(在其他窗口小部件之上)有机会首先在View.onTouchEvent中处理触摸。如果某些View在onTouchEvent中返回true,则遍历停止并且其他View不接收触摸事件。最后,如果没有View消耗触摸,则将其传递给Activity.onTouchEvent。这就是您的全部控制权。顺理成章的是,您看到的绘制在其他对象之上的东西有机会在触摸下面的事物之前处理触摸事件。

一只甜甜圈

伪代码:   public boolean dispatchTouchEvent(MotionEvent ev) {        boolean consume = false;        if (onInterceptTouchEvent(ev) {            consume = onTouchEvent(ev);        } else {            consume = child.dispatchTouchEvent(ev);        }        return consume;    }ref:Android开发艺术探索
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android