Android进阶

一张图搞定安卓事件传递机制

2017-08-16  本文已影响85人  Tony简

先来看一个例子

在一个界面上有一个按钮1,现在在按钮1上覆盖一个按钮2,然后点击按钮2,请问底下的按钮1能拿到点击事件吗?

要搞懂这个问题,首先我们必须对安卓的事件分发机制有一个基本的了解,接下来我用3W1H的方式说明:

事件传递机制

在回来看看之前的例子,它的视图树应该是这样的:


视图树

分析

当用户点击Button2时候,事件会这么传递:

Button2事件传递

因此我们可以知道,如果点击了Buttn2,点击事件会在Button2的onClick事件中消费掉,Button1是拿不到点击事件的,也拿不到任何触摸事件,除非在Button2中重写了分发方法,不走super方法,直接返回true,那么Button1中将拿到触摸事件。

Button1拿到事件

-END-

上一篇下一篇

猜你喜欢

热点阅读