android複習路之事件分發機制篇

最近看了很多關於事件分發機制的文章下面對事件分發機制進行一個總結純理論性的:

事件攔截機制有三種ondispatchTouchEvent()攔截,onInterceptTouchEvent()攔截,onTouchEvent()攔截。所有的方法在後面會有圖進行展示。

1.ondispatchTouchEvent()攔截,這裏就把它稱作分發攔截如果return true 代表攔截,不繼續向下分發。down事件,move事件,up事件直接在當前view進行處理。不調用onInterceptTouchEvent(),onTouchEvent()函數。如果return false,down事件會直接到父view的onTouchEvent(),等待被onTouchEvent()攔截進行處理。move事件,up事件會在到達down事件在onTouchEvent()的攔截層進行直接調用。

2.onInterceptTouchEvent()攔截,return true 進行攔截,事件不再進行向下分發在本層直接調用onTouchEvent()向上回溯等待onTouchEvent()進行攔截處理。move事件,up事件會在到達down事件在onTouchEvent()的攔截層進行直接調用。

3.onTouchEvent()的攔截,return true攔截,事件不再向後續的onTouchEvent()傳遞。move事件,up事件會在到達down事件在onTouchEvent()的攔截層進行直接調用。

圖說明1.ondispatchTouchEvent()攔截 return true 是在viewgroup1進行攔截。2.ondispatchTouchEvent()攔截 return false 是在view進行攔截,onTouchEvent()是在viewgroup2進行攔截。3.onTouchEvent()是在viewgroup2攔截。4.onInterceptTouchEvent(),onTouchEvent()是在viewgroup2攔截。



















































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章