Android中触摸事件传递过程
16lz
2021-01-24
当触摸事件发生时,首先Activity将触摸事件传递给最顶层的View,触摸事件最先到达最顶层
view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,
Android中默认情况下事件传递是由最终的view的接收到,传递过程是从父布局到子布局,也就是从Activity到ViewGroup到View的过程,默认情况,ViewGroup起到的是透传作用。
dispatchTouchEvent
它是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行
super.dispatchTouchEvent(ev),事件向下分发。
当它返回true时所有事件都会往下分发并且用户手指还没离开屏幕时(直到用户手指还没有从屏幕抬起【ACTION_UP】时我们称为一次完整触摸)包括【ACTION_MOVE,ACTION_UP,ACTION_CANCEL】都会重复进行dispatchTouchEvent进行分发,反之终止除此次以外的所有事件下发,还有一种情况第一次返回False时一次完整的触摸就此结束,第一次返回True,接下来N次返回false都会在一次完整触摸的情况下再次进行分发
onInterceptTouchEvent
是ViewGroup提供的方法,默认返回false,返回true表示拦截,当用户一次性完整触摸时此方法只调用一次,当它返回true时他会拦截子View的触摸事件,反之往下传递触摸事件给子View,接着子View又从dispatchTouchEvent事件开始进行分发
onTouchEvent
它是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。当此方法捕获到触摸事件时会传递到当前触摸的View上面如果此View返回true会继续捕获触摸事件反之返回此View上一层控件的onTouchEvent方法进行捕获
view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,
Android中默认情况下事件传递是由最终的view的接收到,传递过程是从父布局到子布局,也就是从Activity到ViewGroup到View的过程,默认情况,ViewGroup起到的是透传作用。
dispatchTouchEvent
它是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行
super.dispatchTouchEvent(ev),事件向下分发。
当它返回true时所有事件都会往下分发并且用户手指还没离开屏幕时(直到用户手指还没有从屏幕抬起【ACTION_UP】时我们称为一次完整触摸)包括【ACTION_MOVE,ACTION_UP,ACTION_CANCEL】都会重复进行dispatchTouchEvent进行分发,反之终止除此次以外的所有事件下发,还有一种情况第一次返回False时一次完整的触摸就此结束,第一次返回True,接下来N次返回false都会在一次完整触摸的情况下再次进行分发
onInterceptTouchEvent
是ViewGroup提供的方法,默认返回false,返回true表示拦截,当用户一次性完整触摸时此方法只调用一次,当它返回true时他会拦截子View的触摸事件,反之往下传递触摸事件给子View,接着子View又从dispatchTouchEvent事件开始进行分发
onTouchEvent
它是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。当此方法捕获到触摸事件时会传递到当前触摸的View上面如果此View返回true会继续捕获触摸事件反之返回此View上一层控件的onTouchEvent方法进行捕获
更多相关文章
- android view滑动助手类 OverScroller VelocityTracker
- Android(安卓)NDK进入发展
- 阿里ctf-2014 android 第一、二题
- Android之循环显示图像的Android(安卓)Gallery组件
- Android(安卓)浅谈AsyncTask异步
- Android(安卓)滑动冲突处理
- Android(安卓)Alarm定时任务基础
- 五种控制Android应用的权限的方法
- 使用kotlin编写Android第一个Activity