天天看點

onInterceptTouchEvent onTouchEvent 的坑 坑死了

簡單來說,不想研究這個,坑死了。

  1. onInterceptTouchEvent 是從父級向子級傳遞。

    onTouchEvent 是從子級向父級傳遞。

  2. 它們兩個互相不影響,onInterceptTouchEvent 先觸發,onTouchEvent 後觸發。
  3. onInterceptTouchEvent 是ViewGroup的事件。

    onTouchEvent 是View 的事件,如果一個View 不能再包含子View ,則它沒有 onInterceptTouchEvent 事件。

  4. 事件觸發順序為 MotionEvent.ACTION_DOWN –> MotionEvent.ACTION_POINTER_DOWN –> MotionEvent.ACTION_MOVE –> MotionEvent.ACTION_POINTER_UP –> MotionEvent.ACTION_UP
  5. 其中 ACTION_POINTER_* 事件隻有在多點觸控時觸發。
  6. 事件觸發後在任何一種事件中傳回true,在其後觸發的所有事件都将不再繼續傳遞。
  7. 在這兩個事件中,return true 表示不再傳遞,return false 表示繼續傳遞。
  8. 這兩個事件的預設傳回值都是false。
  9. View 有 void android.view.View.setOnTouchListener(OnTouchListener l) 方法。

    但是ViewGroup 沒有 set… 方法,是以需要繼承然後覆寫。

  10. 使用 setOnTouchListener 方法後,再調用 super.onTouchEvent(event); 必然傳回true。即設定了 setOnTouchListener 後,會由此類處理觸控事件。