天天看点

android Touch事件

View的Touch事件,在于三个方法onInterceptTouchEvent,onTouchEvent,dispatchTouchEvent

事件分发:dispatchTouchEvent 事件拦截:onInterceptTouchEvent 事件处理:onTouchEvent

上层view为子view,下层view为父view

当只要有onTouchEvent返回true或者上层view的dispatchTouchEvent返回true时,dispatchTouchEvent返回true (特例:当下层view onTouchEvent 一直返回false, 在某一刻拦截了上层view,则此时dispatchTouchEvent 返回true,上层view接受cancel事件结束,之后下层view dispatchTouchEvent返回false )

当onInterceptTouchEvent返回true时,上层的view将接受不到消息或者接受到cancel消息(在下层view down未拦截,而在move拦截时上层view接受cancel消息)

当onInterceptTouchEvent拦截时onTouchEvent一定要返回true,否则dispatchTouchEvent返回false将不分发事件

当有一次onTouchEvent返回true,其他时刻返回false,其他时刻dispatchTouchEvent也返回false,但是继续分发事件,除非被拦截,返回cancel 此view结束事件