`
Drakedog
  • 浏览: 48665 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于onInterceptTouchEvent与onTouchEvent

 
阅读更多

       个人学习总结:

        首先,先介绍一下onInterceptTouchEvent与onTouchEvent,onInterceptTouchEvent是ViewGroup中的方法,该方法有两个作用:1.执行用户按键操作,可将相应按键时间写入其中。2.通过返回值指定过滤方向(是否过滤到子控件还是当前layout层)。onTouchEvent是View中的方法,也有两个作用:1..执行用户按键操作,可将相应按键时间写入其中。2.通过返回值确定传过来的按键事件是否被消费(consume)。

      由于ViewGroup继承自View,所以ViewGroup除了onInterceptTouchEvent,还有onTouchEvent,而View只有onTouchEvent方法。在一般开发中,都是ViewGroup中布局若干个View,例如:一个FrameLayout中有一个Button,接下来的例子可以参考:http://blog.csdn.net/android_tutor/article/details/7193090http://www.cnblogs.com/kingcent/archive/2011/03/08/1977064.html

前面这两个链接希望各位自己动手去试试,因为其中有些本人不敢苟同,觉得有些描述含糊不清,容易让人产生误解。最主要还是自己动手去发现,但是第一个链接中的例子还是不错的。

总结:1.以上标红处。

           2.如果当前层的onTouchEvent消费了按键事件(return true),那么后续的操作将在该层的onTouchEvent中继续执行(如action _up,action_move),如果是子控件的onTouchEvent消费了按键事件,那么后续的操作将回到父控件的onInterceptTouchEvent执行(onInterceptTouchEvent的action _up,action_move);

以下是个人小发现,如果以上能帮助到各位,下面就不用看了。

备注:在试验过程中发现一个“探路”的现象。前提layout<layout1<view,<为包含关系,如果将layout1的onInterceptTouchEvent与onTouchEvent返回值都设置为true,那么点击之后的log是layout.onInterceptTouchEvent.down

layout1.onInterceptTouchEvent.down

layout1.onTouchEvent.down

layout.onInterceptTouchEvent.up

layout1.onTouchEvent.up

下面来分析一下这个log:首先点击以后从layout1.onInterceptTouchEvent.down开始返回false过滤到layout1.onInterceptTouchEvent.down,而layout1.onInterceptTouchEvent.down返回true,拦截在当前层,到

layout1.onTouchEvent.down,(至此,发现layout1就是最后一层,因为layout1.onInterceptTouchEvent.down返回true,所以layout1是叶节点层,down按键事件就是探路的那个探子,因为它发现了layout1是最后一层),而layout1.onTouchEvent.down又返回true,消费了down事件,然后根据总结处的第二条,子控件的onTouchEvent消费了按键事件,那么后续的操作将回到父控件的onInterceptTouchEvent执行,就有了layout.onInterceptTouchEvent.up,而layout.onInterceptTouchEvent.up返回false,理应过滤到layout1.onInterceptTouchEvent.up,但是探子发现layout1就是最后一层,那么就无需走layout1.onInterceptTouchEvent.up,而是直接走的layout1.onTouchEvent.up。

分享到:
评论

相关推荐

    onInterceptTouchEvent与OntouchEvent之间

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们共同构成了Android事件分发机制的核心。 `onInterceptTouchEvent`方法在ViewGroup中定义,它的主要作用是拦截事件流,即决定事件是否由父视图处理,...

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

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

    onInterceptTouchEvent和onTouchEvent使用demo

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

    onInterceptTouchEvent和onTouchEvent学习

    `onInterceptTouchEvent`和`onTouchEvent`是两个核心的方法,它们共同决定了Android应用如何响应用户的触摸操作。这两个方法主要在ViewGroup(如布局)和View(如按钮、文本框等)中被使用。 首先,我们来理解`...

    onInterceptTouchEvent和onTouchEvent调用关系详解

    `onInterceptTouchEvent`和`onTouchEvent`是两个关键的方法,它们协同工作以处理触摸屏幕的动作。这篇文章将深入探讨这两个方法的调用关系及其在Android事件分发机制中的作用。 首先,我们要理解Android的事件分发...

    onTouchEvent 、onInterceptTouchEvent的顺序~

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

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

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

    onInterceptTouchEvent

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

    Android侧滑菜单和轮播图之滑动冲突问题

    基于这个猜测,我自定义一个ViewPager,重写dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent,分别在这三个方法中打印log; 重写SlidingMenu的dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent,...

    自定义控件代码

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

    Laucher 上下左右循环滑动workspace代码修改(新)

    (之前上传的代码有bug,经过作者整理和修改,fix掉部分bug) ...关键技术是理解清楚“onInterceptTouchEvent和onTouchEvent”的关系,以及computeScroll和dispatchDraw等。 可以在百度中搜索关键词获取答案。

    Android中touch事件传递测试demo

    onInterceptTouchEvent和onTouchEvent调用时序详解 测试demo 详细介绍请移步:http://blog.csdn.net/yiranxinshou/article/details/9201833

    dispatch、onIntercept、onTouch三者对MotionEvent的分发、拦截机制Demo

    Title : dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三者对MotionEvent的分发、拦截机制分析 Author: yaong Category:自己做的Demo Tips : 三个自定义View,依次嵌套,并各自覆写拦截、监听方法,通过...

    安卓onTouchEvent上下左右滑动事件

    在Android开发中,触摸事件是用户与应用交互的重要方式,特别是在移动设备上。`onTouchEvent`是处理触摸事件的主要方法,它可以捕捉用户的点击、滑动等手势。本篇将详细讲解如何通过重写`onTouchEvent`来实现上下...

    android事件分发机制测试demo

    安卓事件分发机制测试代码,事件传递从Activity--&gt;ViewGroup--&gt;View。dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent这三个函数的返回值不同,代表的事件传递的不同。

    Android事件传递

    android 事件传递在很多地方被描述的很复杂,难懂,其实只要自己通过代码跟一样程序的执行过程,看一下debug日志输出,就很容易理解了,在本代码里通过更改onInterceptTouchEvent和onTouchEvent的返回值,观查debug...

    ViewDragHelper完全解析 自定义ViewGroup神器

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

    仿ViewPager,事件分发应用

    在描述中提到的博客链接(由于无法直接访问,以下内容基于一般知识推测)很可能详细解释了如何重写`onInterceptTouchEvent`和`onTouchEvent`来实现自定义的事件分发逻辑。这可能包括了如何在仿ViewPager中判断滑动...

Global site tag (gtag.js) - Google Analytics