android View 事件处理流程
2012-04-11 22:04
441 查看
android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。
一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP
当屏幕中包含一个ViewGroup,而这个ViewGroup又包含一个子view,这个时候android系统如何处理Touch事件呢?到底是ViewGroup来处理Touch事件,还是子view来处理Touch事件呢?我只能很肯定的对你说不一定。呵呵,为什么呢?看看下面我的调查结果你就明白了。
每个View中都有的三个函数调用顺序:
此View 先调用dispatchTouchEvent ------> 再调用此View的
onInterceptTouchEvent 返回值为真---------》直接调用此View的onTouchEvent
返回值为假-----》调用下一个View的dispatchTouchEvent
android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
事件分发是由:rootView → 子View
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
在分发过程中,如果哪一个的View 的 onInterceptTouchEvent 返回值为真的话
则停止像其子View 分发事件,子View 将得不到事件
默认的返回值为false
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
onTouchEvent 如果返回值为真: 则将会执行onTouchEvent 中的内容,它的父View 将不会处理此事件
如果返回值为假:则不会执行onTouchEvent 中的内容, 交给它父View, 由父View 的OnTouchEvent返回值决定
默认返回值为假。
一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP
当屏幕中包含一个ViewGroup,而这个ViewGroup又包含一个子view,这个时候android系统如何处理Touch事件呢?到底是ViewGroup来处理Touch事件,还是子view来处理Touch事件呢?我只能很肯定的对你说不一定。呵呵,为什么呢?看看下面我的调查结果你就明白了。
每个View中都有的三个函数调用顺序:
此View 先调用dispatchTouchEvent ------> 再调用此View的
onInterceptTouchEvent 返回值为真---------》直接调用此View的onTouchEvent
返回值为假-----》调用下一个View的dispatchTouchEvent
android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
事件分发是由:rootView → 子View
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
在分发过程中,如果哪一个的View 的 onInterceptTouchEvent 返回值为真的话
则停止像其子View 分发事件,子View 将得不到事件
默认的返回值为false
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
onTouchEvent 如果返回值为真: 则将会执行onTouchEvent 中的内容,它的父View 将不会处理此事件
如果返回值为假:则不会执行onTouchEvent 中的内容, 交给它父View, 由父View 的OnTouchEvent返回值决定
默认返回值为假。
相关文章推荐
- Android按键事件处理流程 -- 从事件被派发到View层次结构的根节点DecorView开始分析
- Android View 事件分发处理流程
- Android View系统源码分析(一)——概述&触摸事件总体处理流程
- Android事件分发和View绘制流程分析(三)
- 写一遍加深记忆 Android的事件分发处理流程
- Android事件处理流程分析
- android view 中 MotionEvent 及其事件处理
- Android - requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制)
- Android事件处理分析+Android事件处理 +Android输入事件流程
- Android 事件捕捉和处理流程分析
- android View System touch 事件分发流程
- Android-View事件处理机制
- Android 输入管理服务-输入事件到达之后的处理流程
- Android GUI之View事件处理
- Android 触摸事件的分发与处理流程:onInterceptTouchEvent和onTouchEvent
- Android的frameworks层键盘事件处理流程分析
- Android热插拔事件处理流程--Vold
- Android触摸事件分发处理机制详解与源码分析一(View篇)
- Android事件处理分析+Android事件处理 +Android输入事件流程