Android 事件分发

Touch 事件的分发和消费机制dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
dispatchTouchEvent 事件分发
true 事件会分发给当前View 并由dispatchTouchEvent 方法消费,同时停止向下传
false 事件分发为两种情况
1.如果View 获取的事件直接来自Activity,这会返回activity的onTouchEvent进行消费
2.如果View获取的事件来自外层父控件 这回将时间返回给父View的onTouchEvent进行消费
Super.dispatchTouchEvent(ev) 事件会分发给当前的View的onInterceptTouchEvent方法

onInterceptTouchEvent(ev) 事件拦截
true 对事件进行拦截 并将拦截的事件交给当前View的onTouchEvent 进行处理
false 将事件方行 传递到子View上,在传递到子View的dispatchTouchEvent
再进行事件的分发
Super.onInterceptTouchEvent(ev)事件默认拦截 并将拦截到的事件交给当前View的onTouchEvent进行处理 (和返回ture一样)

onTouchEvent 事件响应
true 事件拦截 自己处理
false 放弃处理 ,返回到上级,并由上层View的onTouchEvent 来接受
super.onTouchEvent(ev)默认处理事件的逻辑和返回false的一样

在有注册onTouchListener的情况下会先调用
onTouch
true 这事件不在向下层传递
false 像onTouchEvent传递
然后 onTouchEvent
然后onClick

你可能感兴趣的:(Android 事件分发)