每次遇到滑动冲突都头大,带你寻找事件冲突的根源

每次遇到滑动冲突都头大,带你寻找事件冲突的根源

分发的什么事件?
事件分发的关键方法?
onTouch、onClick之间的关系?
了解冲突原因,如何解决冲突?

MotionEvent

事件 简介
ACTION_DOWN 手指 初次接触到屏幕 时触发
ACTION_MOVE 手指 在屏幕上滑动时触发,会多次触发
ACTION_UP 手指 离开屏幕 时触发
ACTION_CANCEL 事件 被上层拦截 时触发

事件分发、拦截与消费

类型 相关方法 Activity ViewGroup View
事件分发 dispatchTouchEvent
事件拦截 onInterceptTouchEvent X X
事件消费 onTouchEvent X

总流程:

每次遇到滑动冲突都头大,带你寻找事件冲突的根源

解决冲突:

  • 内部拦截法

  • 外部拦截法