为了账号安全,请及时绑定邮箱和手机立即绑定

Android触摸事件如何传递?

Android触摸事件如何传递?

慕婉清6462132 2019-11-13 15:01:25
我不是在问如何处理触摸事件,而是幕后发生了什么?如果有多个嵌套的小部件,它们以什么顺序看到事件?开发者对此有控制权吗?理想情况下,我想要有关该主题的文档。
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

从活动的角度来看:

触摸事件首先传递到Activity.dispatchTouchEvent。在这里您可能会首先抓住它们。

在这里,它们被调度到Window,并在其中遍历View层次结构,以使最后绘制的窗口小部件(在其他窗口小部件之上)有机会首先在View.onTouchEvent中处理触摸。如果某些View在onTouchEvent中返回true,则遍历停止并且其他View不接收触摸事件。

最后,如果没有View消耗触摸,则将其传递给Activity.onTouchEvent。

这就是您的全部控制权。顺理成章的是,您看到的绘制在其他对象之上的东西有机会在触摸下面的事物之前处理触摸事件。


查看完整回答
反对 回复 2019-11-13
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

伪代码:


   public boolean dispatchTouchEvent(MotionEvent ev) {

        boolean consume = false;

        if (onInterceptTouchEvent(ev) {

            consume = onTouchEvent(ev);

        } else {

            consume = child.dispatchTouchEvent(ev);

        }


        return consume;

    }

ref:Android开发艺术探索


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 345 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信