android事件分发机制

来源:互联网 发布:苹果cms简洁模板 编辑:程序博客网 时间:2024/05/22 02:01

我们都知道一个控件有继承ViewGroup或View的两种类型。

ViewGroup可以作为父控件,所以他不但可以处理事件还可以分发事件,他的相关事件有三个:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。

View类型的可以作为子控件使用,他可以对传递到他这里的事件进行处理,的相关事件只有两个:dispatchTouchEvent、onTouchEvent。


父控件的onInterceptTouchEvent作用是:是否对传递到他这里的事件进行拦截,常用处理滑动控件较多的时候滑动冲突。拦截之后就不会向下一级分发所拦截的事件了他自己的onTouchEvent中处理对应拦截的事件


父控件和子控件的dispatchTouchEvent主要作用是:分发事件。对分发到他们这里的事件选择处理还是不处理让他继续传递 。而真正分发事件的是父容器中的dispathchTouchEvent事件 。所有事件都不做处理的情况下 只有 down事件 会自动向下分发,别的事件不会。


onTouchEvent:用来处理他们获取到的响应的事件。


常见的事件冲突问题一般都发生在父容器和子控件之间,或者是父容器和子控件之间等,处理这种问题的思路:父容器的onInterceptTouchEvent对自己所必须的事件进行拦击不向下分发 子控件在dispatchTouchEvent中对自己想要的事件进行获取。 

0 0