每次遇到滑動衝突都頭大,帶你尋找事件衝突的根源
分發的什麼事件?
事件分發的關鍵方法?
onTouch、onClick之間的關係?
瞭解衝突原因,如何解決衝突?
MotionEvent
事件 | 簡介 |
---|---|
ACTION_DOWN | 手指 初次接觸到屏幕 時觸發 |
ACTION_MOVE | 手指 在屏幕上滑動時觸發,會多次觸發 |
ACTION_UP | 手指 離開屏幕 時觸發 |
ACTION_CANCEL | 事件 被上層攔截 時觸發 |
事件分發、攔截與消費
類型 | 相關方法 | Activity | ViewGroup | View |
---|---|---|---|---|
事件分發 | dispatchTouchEvent | √ | √ | √ |
事件攔截 | onInterceptTouchEvent | X | √ | X |
事件消費 | onTouchEvent | √ | X | √ |
總流程:
解決衝突:
-
內部攔截法
-
外部攔截法