Android事务分发机制一向都是一个麻烦点,很我开辟者对此都一头雾水,下面用图文来解决下我的理解,但愿这篇文章可以或许给你点纷歧样的看法。
一、分发机制别离:Activity事务分发机制、ViewGroup事务分发机制、View事务分发机制,事务分发是dispatchTouchEvent,事务阻挡是onInterceptTouchEvent,事务的响应是onTouchEvent。
二、编写ViewGroup的控件 担当LinearLayout 然后重写 dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent。在每个方式中都打印一下执行代码。如下图。
三、编写View的控件 担当Button 然后重写 dispatchTouchEvent,onTouchEvent。注重View是没有onInterceptTouchEvent阻挡事务的。如下图。
四、起首看一下Activity的dispatchTouchEvent源码:上面这段代码,关头的就是:getWindow().superDispatchTouchEvent(ev)。如下图。
五、点击按钮打印信息,我们看的挨次:activity-->viewGroup-->view,dispatchTouchEvent 和 onTouchEvent 一旦return true,终结事务传递,return false,事务都回传给父控件的onTouchEvent处置。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!