您的位置:首页 > 移动开发 > Android开发

Android Touch事件分发与消费机制

2016-01-06 15:04 447 查看

1.事件分发:dispatchTouchEvent(MotionEvent ev)

由父View向子View传递事件。

return true,事件会分发给当前View,并由dispatchTouchEvent()进行消费,同时事件停止传递。

return false,将事件返回给Activity或者父View的onTouchEvent()进行消费。

super.dispatchTouchEvent(),事件会分发给当前View的onInterceptTouchEvent()方法。

2.事件拦截:onInterceptTouchEvent(MotionEvent ev)

事件由当前View的dispatchTouchEvent()进行分发。
return true,拦截事件,并交由当前View的onTouchEvent处理。
return false,不拦截事件,当前View的事件会被传递到下层子View上,再由子View的dispatchTouchEvent()来进行事件分发。
super.onInterceptTouchEvent(),同return false。

3.事件响应:onTouchEvent(MotionEvent ev)

1)当前View dispatchTouchEvent()返回super.dispatchTouchEvent(),并且onInterceptTouchEvent()返回true时,当前View的onTouchEvent()会被掉用
2)事件一直被放行到最上层View,则会调用当前View的onTouchEvent()事件

return false,事件会从当前View向上传递,并且由父View的onTouchEvent()来接收
return true,消费该事件
super.onTouchEvent() 默认处理事件的逻辑与return false相同

注意:View没有onInterceptTouchEvent()方法,因为事件已经分发到最后,不需要拦截了。

文中所述父View皆指ViewGroup

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: