android開發之Touch事件的分發機制

touch事件的分發大家都有所瞭解,由父節點往子節點一層層傳遞事件,分發->攔截,到子節點,繼續分發->攔截,進入View分發->onTouchEvent,最終執行View的onClick事件。這裏就畫個圖,簡單說下它的執行流程。

在每一層的dispathTouchEvent裏返回true即代表當前事件被中斷掉,不再往下分發當前事件。

在onInterceptTouchEvent裏返回true即代表當前事件被此層消費掉,接着交給此節點的onTouchEvent事件處理。

onTouchEvent事件返回true代表此次事件在此終結,若返回false,會把這個事件往上一層父節點的onTouchEvent事件傳遞。

當父節點的onTouchEvent返回true時,事件即在此層消費掉。接下來開始UP事件的傳遞,UP事件走到這一層的時候,

走完dispathTouchEvent,不走onInterceptTouchEvent,即跳到onTouchEvent事件,也在此層消費掉,不再繼續往下傳遞。

就好比子節點說我不處理了,老大你處理吧,就把這個鍋甩給父節點,父節點不想處理就繼續往上甩鍋。

直到找到願意去接鍋的節點,後續的事件處理都會走到接鍋的節點去處理。

 

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