Android中的事件分发机制(一)

来源:互联网 发布:手机有刷屏软件吗 编辑:程序博客网 时间:2024/04/27 16:43
Activity或者View类中都有onTouchEvent回调方法,来接收touch事件。
一个完整的是从ACTION_DOWN开始,到ACTION_UP结束。
在简单的情况下,我们只需要在onTouchEvent中switch case语句,来处理三个动作(down,move,up)。
ViewGroup作为一个paraent是可以截获传向它的child的touch事件的。
那么,事件是如何传递的呢?

处理过程是按照Touch事件从上向下传递,再按照是否消费的返回值,从下向上返回,即如果View的onTouchEvent返回false,那么它将不消费事件,这个事件就交给它的上一级去消费,如果上一级也不消费,就再找上一级,这个过程最终会找到Activity,如果Activity也不消费,这个事件就消失了。

即 隧道式向下分发,然后 冒泡式向上处理。

分析图如下:


三个方法的作用:
dispatchTouchEvent:用来事件分发,这个方法调用了 onIterceptTouchEvent和onTouchEvent方法,一般来说,这个方法不重写。

onIterceptTouchEvent:用于事件拦截,ViewGroup类中源代码的事件它返回false,表示不拦截事件,我们可以自己去写返回值来控制事件的分发。

onTouchEvent:用来事件处理,返回true代表这个view能处理该事件,事件将会终止向上传递,如果返回false,表示不能处理该事件,则把事件传递给这个事件的父View的onTouchEvent方法。

1 0
原创粉丝点击