> 文档中心 > 安卓界面点击事件分发流程(Activity,ViewGroup,View)

安卓界面点击事件分发流程(Activity,ViewGroup,View)

先上一个正常情况下的分发流程。

可以看到,事件从Activity dispatchTouchEvent方法出发到Activity onTouchEvent方法,呈现一个U型的图。

下面我们分析每个事件返回true、false会造成的影响。

1.onInterceptEvent方法的意思就是拦截事件。默认为false,表示不拦截事件。true表示拦截事件,不会分发给下层,执行自己的onTouchEvent方法。

例如:在ViewGroup层的onInterceptEvent方法,返回true,不会分发给View并执行自己的onTouchEvent方法,返回false,继续分发给View的dispatchTouchEvent方法。

2.ouTouchEvent方法的意思是触摸事件处理。true代表自己处理事件,就不会继续调用上层的onTouchEvent。false(同super.onTouchEvent(ev))代表不处理事件,会继续调用上层onTouchEvent。

例如:在ViewGroup层的onTouchEvent方法中,返回true,则不会调用Activity的onTouchEvent方法。返回false,则会调用Activity的onTouchEvent方法。

3.dispatchTouchEvent方法一般不会去重写,因为该方法的返回是由onInterceptEvent,ouTouchEvent和子类的dispatchTouchEvent方法决定的。