View的事件传递机制

来源:互联网 发布:淘宝上买摩托靠谱吗 编辑:程序博客网 时间:2024/05/19 18:46

事件传递机制中最重要的两个函数

dispatchTouchEvent(MotionEvent ev)
负责分发事件

onTouchEvent(MotionEvent event)
负责处理事件

Activity层:
触摸事件发生后首先调用Activity的dispatchTouchEvent(MotionEvent event)函数,然后调用onUserInterface,接着就把事件传递给root View,也就是一个GroupView分发给他的子View。如果分发下去的事件没人处理的话,会调用Activity自己的onTouchEvent函数来处理事件。

ViewGroup层:
触摸事件传递给ViewGroup之后,他也通过dispatchTouchEvent对事件进行派发,onInterceptTouchEvent()函数用来拦截事件,如果返回值为true,则不会继续传递,如果返回值为false,则不对此事件进行拦截。onInterceptTouchEvent()函数只有ViewGroup类有。View类没有。

View层:
触摸事件传递给View之后,他也通过dispatchTouchEvent函数进行处理,首先触发的是onTouchListener中的onTouch函数(如果有设置的话),然后会执行onTouchEvent函数,最后如果有click事件则会执行click事件。

总结,真正进行处理的只有View中的代码,但是每一层次都有dispatchTouchEvent进行传递。每一次只会传递一个Action,当一个Action操作完了之后才会进行下一个,比如0表示ACTION_DOWN,1表示ACTION_UP,2表示ACTION_MOVE。
本文有参考【工匠若水 http://blog.csdn.net/yanbober】,但绝无抄袭,算是读书笔记吧。

0 0
原创粉丝点击