返回信息流感谢大家的回复,刚刚看到篇文章说的挺详细的:
http://codetheory.in/understanding-android-input-touch-events/
更新,大致应该是,如果一个MotionEvent(如ACTION_DOWN)dispatch到最底层的view(中间没有被拦截),然后从下往上每层对应onTouchEvent都返回false,一直回传到顶层activity的onTouchEvent,activity的onTouchEvent可以返回true/false,返回false表示这个MotionEvent没有被消费。如果出现这种情况,那么接下来的几个事件(ACTION_MOVE,ACTION_UP)都会直接交给activity的onTouchEvent处理。
如果有什么错误,欢迎指正~
------------------------------------------------
最近在看touch event分发机制知识。有一些疑问:
1.对于每一个touch event,android系统是不是能保证它一定会被消费掉,即会得到一定的响应?
2.如果系统保证事件会被消费掉,那么如果与一个touch事件相关的所有activity/viewgroup/view的dispatchTouchEvent(),onTouchListener.onTouch(),onTouchEvent()都返回false,会出现什么情况呢?
请高手解答下~
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #26193同步于 2015/10/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
android touch event 分发机制的问题
lkasdolka2
2015/10/16镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
http://wangkuiwu.github.io/2015/01/02/TouchEvent-Activity/
Activity中的onTouchEvent是Activity自身对触摸事件的处理。如果该Activity的android:windowCloseOnTouchOutside属性为true,并且当前触摸事件是ACTION_DOWN,而且该触摸事件的坐标在Activity之外,同时Activity还包含了视图的话;就会导致Activity被结束。
啊,其实我没有试过他说的对不对
哈 , 刚看还以为是你的博客~
【 在 dss886 的大作中提到: 】
: http://wangkuiwu.github.io/2015/01/02/TouchEvent-Activity/
: Activity中的onTouchEvent是Activity自身对触摸事件的处理。如果该Activity的android:windowCloseOnTouchOutside属性为true,并且当前触摸事件是ACTION_DOWN,而且该触摸事件的坐标在Activity之外,同时Activity还包含了视图的话;就会导致Activity被结束。
: 啊,其实我没有试过他说的对不对
了解了,原来还以为一个事件在层层传递过程中一定要求要被消费掉的。。。
【 在 a206206 的大作中提到: 】
: 系统的默认处理肯定有的,就是ignore
这么说吧, 有一个activity a, 一个 viewgroup b落在a中, 一个view c落在 b中。这时候在c中出现一个touch事件,事件传递过程中没有拦截,所有onTouchEvent都返回false,会不会出现什么状况呢?
【 在 zishi 的大作中提到: 】
: 你说的响应是?没有响应不表示系统没有处理,这个你可以做个实验,复写你写的那些方法,看看~~
这个不就是正常的分发机制吗?像你这么说,activity也可以返回false啊,表示没有消费,不过后续应该不会对它有什么处理了吧,事件应该走完了~~
【 在 lkasdolka2 的大作中提到: 】
: 感谢大家的回复,刚刚看到篇文章说的挺详细的:
: http://codetheory.in/understanding-android-input-touch-events/
: 更新,大致应该是,如果一个MotionEvent(如ACTION_DOWN)dispatch到最底层的view(中间没有被拦截),然后从下往上每层对应onTouchEvent都返回false,一直回传到顶层activity的onTouchEvent,activity的onTouchEvent可以返回true/false,返回false表示这个MotionEvent没有被消费。如果出现这种情况,那么接下来的几个事件(ACTION_MOVE,ACTION_UP)都会直接交给activity的onTouchEvent处理。
: ...................
是这样的
【 在 zishi 的大作中提到: 】
: 这个不就是正常的分发机制吗?像你这么说,activity也可以返回false啊,表示没有消费,不过后续应该不会对它有什么处理了吧,事件应该走完了~~