touch事件的分發大家都有所瞭解,由父節點往子節點一層層傳遞事件,分發->攔截,到子節點,繼續分發->攔截,進入View分發->onTouchEvent,最終執行View的onClick事件。這裏就畫個圖,簡單說下它的執行流程。
在每一層的dispathTouchEvent裏返回true即代表當前事件被中斷掉,不再往下分發當前事件。
在onInterceptTouchEvent裏返回true即代表當前事件被此層消費掉,接着交給此節點的onTouchEvent事件處理。
onTouchEvent事件返回true代表此次事件在此終結,若返回false,會把這個事件往上一層父節點的onTouchEvent事件傳遞。
當父節點的onTouchEvent返回true時,事件即在此層消費掉。接下來開始UP事件的傳遞,UP事件走到這一層的時候,
走完dispathTouchEvent,不走onInterceptTouchEvent,即跳到onTouchEvent事件,也在此層消費掉,不再繼續往下傳遞。
就好比子節點說我不處理了,老大你處理吧,就把這個鍋甩給父節點,父節點不想處理就繼續往上甩鍋。
直到找到願意去接鍋的節點,後續的事件處理都會走到接鍋的節點去處理。