ViewGroup在接收到touch事件时,通过dispatchTouchEvent(MotionEvent event)把事件分发到子view里. touch事件的起始动作是ACTION_DOWN, viewgroup会调用onInterceptTouchEvent(MotionEvent ev)方法,若返回false才会正式分发事件到子view中,子view也调用dispatchTouchEvent方法,若返回true证明它消费了这个事件, viewgroup会把mMotionTarget设为该子view。
在后续事件分发中(通常为ACTION_MOVE), 若mMotionTarget为null, 则viewgroup会消费这个事件, 否则viewgroup会调用onInterceptTouchEvent方法,若返回true时表示viewgroup要消费这个事件, 它会把mMotionTarget设为null然后返回true. 若返回false表示继续由子view来消费该事件。
总的来说,就是若 onInterceptTouchEvent方法返回true或者 ACTION_DOWN时没有子view消费该事件,则由viewgroup来消费该事件,否则将事件分发到子view中处理。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/czh0766/archive/2010/08/18/5819265.aspx
分享到:
相关推荐
自定义Viewgroup,其中包括三个listview,但拖拽中间listview的上部,3个listview一起运动。
博客配套说明:http://blog.csdn.net/xiaohao0724/article/details/54798908
android之Touch事件处理机制测试, 滑动事件冲突解决,ViewGroup中事件触发和传递机制
Android中与Touch事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、...继承ViewGroup的大多是容器控件,如LinearLayout等,而继承View的大部分是显示控件比如TextView,ImageView等,本例演示Touch事件分发过程
Android中的事件分发机制也就是View与ViewGroup的对事件的分发与处理。在ViewGroup的内部包含了许多View,而ViewGroup继承自View,所以ViewGroup本身也是一个View。对于事件可以通过ViewGroup下发到它的子View并交...
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应这些方法的控件包括:ViewGroup、View、Activity。...
onIntercept、onTouchEvent 触摸事件流程
listview和viewpager及tabhost的touch事件冲突的解决,至少可以实现在重写父viewGroup的onintercpettouchevent的实现拦截和重写子viewGroup的onintercpettouchevent实现不允许拦截。
创建定制的ViewGroup以及理解Android绘制视图的方式
ViewGroup事件分发Demo实验代码,结合博客地址讲解:https://blog.csdn.net/gaoxiaoweiandy/article/details/89882161
android中继承ViewGroup用法 android中继承ViewGroup用法 android中继承ViewGroup用法
自定义ViewGroup学习 最简单的模式,显示一个TextView到自定义ViewGroup中
viewgroup实现viewpage效果 解决touch事件处理可用于首页banner
自定义ViewGroup+Adapter
自定义VIewGroup组合控件,包括事件的处理,可以运行,值得学习
使用ViewGroup的导航页面实例.欢迎大家下载学习
通过前一篇博客View的事件分发机制,从dispatchTouchEvent说起(一)的介绍相信大家对 Android View 事件的分发机制有了很深的理解。我们知道 Android 中 View 是存在于 Activity。 今天我们继续学习 Activity 到 ...
ViewGroup存在的目的就是为了对其子View进行管理,为其子View添加显示、响应的规则。因此,自定义ViewGroup通常需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法来确定子View的位置,重写...
自定义ViewGroup进一步学习,显示两个TextView到自定义控件中,对两个TextView进行布局
学习文档viewgroup