`

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
分享到:
评论

相关推荐

    自定义控件代码

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

    ViewDragHelper完全解析 自定义ViewGroup神器

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

    实现侧滑上下滑自定义ViewGroup

    我们经常看到的qq侧滑、上下拉其实都是一个自定义的ViewGroup。至于具体实现什么动作、只要重写ViewGroup的onLayout和OnTouchEvent就OK。

    Android应用开发中自定义ViewGroup的究极攻略

    最近在学习android的view部分,于是动手实现了一个类似ViewPager的可上下或者左右拖动的ViewGroup,中间遇到了一些问题(例如touchEvent在onInterceptTouchEvent和onTouchEvent之间的传递流程),现在将我的实现过程...

    Android ViewDragHelper完全解析 自定义ViewGroup神器

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

    android事件分发机制测试demo

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

    完全理解android事件分发机制

    在View中其间会调用onTouchEvent(),在ViewGroup中其间会调用onInterceptTouchEvent()和onTouchEvent()。 **onInterceptTouchEvent():**这个函数是事件拦截函数,是ViewGroup才有的函数。

    Android事件分发小结

    事件传递方法包括dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent,其中前两个是View和ViewGroup都有的,最后一个是只有ViewGroup才有的方法。这三个方法的作用分别是负责事件分发、事件处理、事件拦截。 ...

    自定义ViewGroup 显示一个TextView到ViewGroup

    自定义ViewGroup学习 最简单的模式,显示一个TextView到自定义ViewGroup中

    Android 事件分发详解及示例代码

    Android中与事件分发相关的方法主要包括dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三个方法,而事件分发一般会经过三种容器,分别为Activity、ViewGroup、View。下表对这三种容器分别拥有的事件分发...

    继承ViewGroup的实例

    android中继承ViewGroup用法 android中继承ViewGroup用法 android中继承ViewGroup用法

    android:ViewGroup中使用TabHost

    解决ViewGroup中使用TabHost时tabhost中的tab不能显示的问题

    自定义ViewGroup 显示两个TextView

    自定义ViewGroup进一步学习,显示两个TextView到自定义控件中,对两个TextView进行布局

    ViewGroup和View中的触摸事件流程

    onIntercept、onTouchEvent 触摸事件流程

    自定义ViewGroup和Horizontalview

    自定义ViewGroup卡片式页面效果、Horizontalview下标跟随宽度移动改变 主要实现的功能有: Horizontalview的item滑动字体颜色渐变(仿微信)和大小渐变。 Scrollview是重写的ViewGroup,实现的自定义卡片式布局。

    Android listview的滑动冲突解决方法

    Android listview的滑动冲突解决方法 ...一般来说,view的onTouchEvent返回true,即消耗点击事件,viewgroup的onInterceptTouchEvent返回false,即不拦截点击事件,这一点从android源码中可以看出来。但是lis

    自定义ViewGroup+Adapter

    自定义ViewGroup+Adapter

    普通view和Viewgroup中touchEvent的传递简单demo

    只是一套自定义的view和Viewgroup,都是很简单的代码,为了避免麻烦就上传上来了,看touchevent传递的时候可以在dispatchTouchevent和touchevent中打上断点,调试就行了. 只有dispatchTouchEvent和TouchEvent

    使用ViewGroup的导航页面实例

    使用ViewGroup的导航页面实例.欢迎大家下载学习

    Android控件架构与自定义控件详解(三)——自定义ViewGroup

    ViewGroup存在的目的就是为了对其子View进行管理,为其子View...因此,自定义ViewGroup通常需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法来确定子View的位置,重写onTouchEvent()方法增加响应事件。

Global site tag (gtag.js) - Google Analytics