`

ViewGroup中的onInterceptTouchEvent和onTouchEvent调用时序

阅读更多
最近在做android类似slidemenu项目,遇到了scrollerview在fragment中没有响应手势滑动的动作

仔细研究了下并参考别人的研究成果

基本的规则是:
1. ondown事件总是会先走onInterceptTouchEvent()方法

2. 如果ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后返回false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理。会传递到目标view中去。

3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件

4.  如果最终需要处理事件的view的onTouchEvent()返回了false(没有消费该事件),那么该事件将被传递至其上一层次的view(父view层)的onTouchEvent()处理。

5.  如果最终需要处理事件的view 的onTouchEvent()返回了true(已消费事件),那么后续事件将可以继续传递给该view的onTouchEvent()处理。


onInterceptTouchEvent返回true的时候,表示事件被拦截,只在根view中响应相关touch事件
onInterceptTouchEvent返回false的时候,表示没有拦截,子view正常响应事件
onTouchEvent返回false的时候,表示事件没有被消费,事件会顺序上传到parentview去。
onTouchEvent返回true的时候,表示事件已消费,事件不会再作传递。

参考 :http://www.blogjava.net/TiGERTiAN/archive/2011/02/22/344869.html
http://blog.csdn.net/bigapple88/article/details/7658938
分享到:
评论

相关推荐

    android事件2-onInterceptTouchEvent和onTouchEvent调用时序

    在Android开发中,理解和掌握`onInterceptTouchEvent`与`onTouchEvent`的调用时序至关重要,因为它们是实现触摸事件处理的关键。这两个方法都属于Android的触摸事件处理机制,涉及到了ViewGroup与子View之间的事件...

    onInterceptTouchEvent和onTouchEvent调用关系详解

    理解并掌握`onInterceptTouchEvent`和`onTouchEvent`的调用关系,可以帮助开发者更灵活地控制触摸事件的流向,实现复杂的手势识别和用户界面交互。在实际开发中,我们可以通过重写这两个方法,为自定义View或...

    onInterceptTouchEvent和onTouchEvent学习

    4. 若ViewGroup在ACTION_DOWN时就拦截了事件,后续的ACTION_MOVE和ACTION_UP也会在ViewGroup的`onInterceptTouchEvent`中处理,除非在ACTION_DOWN之后,ViewGroup在ACTION_MOVE中返回`false`,这样事件流会回到子...

    onInterceptTouchEvent和onTouchEvent使用demo

    `onInterceptTouchEvent`和`onTouchEvent`是两个至关重要的方法,它们共同构成了Android视图层次结构中的触摸事件分发机制。下面我们将深入探讨这两个方法的用法及其在实际开发中的应用场景。 1. `...

    onInterceptTouchEvent与OntouchEvent之间

    对于ViewGroup,如果事件被拦截(`onInterceptTouchEvent`返回`true`),那么事件会在`onTouchEvent`中处理;对于View,事件总是会到达`onTouchEvent`,除非在父视图中被拦截。 在`onTouchEvent`中,ACTION_DOWN...

    自定义控件代码

    侧滑面板(对ViewGroup的自定义) * 应用场景: 扩展主面板的功能 ... 触摸优化: 重写ViewGroup里onInterceptTouchEvent和onTouchEvent Github 大牛 Jake Wharton nineoldandroids.jar 属性动画 ActionBarSherlock

    onTouchEvent 、onInterceptTouchEvent的顺序~

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onTouchEvent` 和 `onInterceptTouchEvent` 是处理这些事件的两个重要方法。本文将深入探讨这两个方法的使用、顺序以及它们在Android事件分发机制中的角色...

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    在Android开发中,触摸事件的处理是用户交互的基础,而`onTouchEvent`和`onInterceptTouchEvent`则是处理这些事件的关键方法。这篇文章将深入解析这两个方法的区别和它们在触摸事件处理链中的作用。 首先,`...

    onInterceptTouchEvent

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onInterceptTouchEvent`和`onTouchEvent`是处理这些事件的两个重要方法。本篇文章将深入探讨`onInterceptTouchEvent`,并结合`onTouchEvent`讲解它们的...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev)

    在事件的整个生命周期中,`onInterceptTouchEvent`和`dispatchTouchEvent`会被多次调用,开发者可以根据事件的不同状态进行不同的处理。 理解`onInterceptTouchEvent`和`dispatchTouchEvent`的交互机制,可以让我们...

    ViewDragHelper完全解析 自定义ViewGroup神器

    在自定义ViewGroup中,很多效果都包含用户手指去拖动其内部的某个View(eg:侧滑菜单等),针对具体的需要去写好onInterceptTouchEvent和onTouchEvent这两个方法是一件很不容易的事,需要自己去处理:多手指的处理、加...

    下拉上拉刷新Android-PullToRefresh-1.2.1.zip

    PullToRefresh库通过覆写ViewGroup的onInterceptTouchEvent和onTouchEvent方法,捕获并处理滑动事件。当用户下拉到一定距离时,显示刷新指示器,并启动刷新逻辑。同样,上拉加载更多也是监听上拉手势,触发加载新...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev) 解析

    `onInterceptTouchEvent(MotionEvent ev)` 和 `dispatchTouchEvent(MotionEvent ev)` 是ViewGroup和View类中处理触摸事件的关键方法,它们协同工作,确保触摸事件能够正确地传递和分发到相应的视图。下面将详细解析...

    关于点击事件的资料

    总结起来,Android中的点击事件处理是一个复杂的事件分发过程,涉及到onInterceptTouchEvent()和onTouchEvent()两个关键方法。通过它们,开发者可以灵活控制触摸事件的流向,实现自定义的交互逻辑。理解并熟练掌握这...

    LinearLayoutAutoSwapRow-源码.rar

    在Android中,这通常涉及到对ViewGroup的onInterceptTouchEvent和onTouchEvent方法的重写,以便捕获并处理触摸事件。 1. **触摸事件处理**: - `onInterceptTouchEvent`:这是在ViewGroup层级捕获触摸事件的地方。...

    android中dispatchTouchEvent和onInterceptTouchEvent研究

    当`onInterceptTouchEvent`返回true时,表示ViewGroup想要拦截并处理事件,之后的事件序列将不再分发给子View,而是直接交给`onTouchEvent`。如果返回false,事件将继续传递给子View。 在实际应用中,`...

    Android控件架构与自定义控件详解(四)——事件拦截机制分析

    事件拦截机制主要涉及两个关键方法:ViewGroup的`onInterceptTouchEvent`和View的`onTouchEvent`。当一个触摸事件发生时,系统首先调用ViewGroup的`onInterceptTouchEvent`,如果返回true,表示ViewGroup拦截了事件...

    解决ios或安卓手机微信上下拖动页面出现穿透(橡皮筋现象)

    5. 考虑使用ViewGroup的onInterceptTouchEvent和onTouchEvent方法:通过自定义逻辑来控制滑动行为。 在解决这类问题时,通常需要结合实际的项目代码和UI结构进行调试和调整。提供的"demo"文件可能是包含示例代码或...

Global site tag (gtag.js) - Google Analytics