關於android中的事件分發機制,點擊事件分發機制詳解

一,什麼是事件分發機制:
一個動作從手指落下到手指擡起的整個過程,這個事件(動作)在程序中所經歷的順序,或者說發放的過程,或者說程序處理的過程。

 整體有一句話概述:隧道式向下(內)分發,冒泡式向上處理,


二,事件分發機制涉及到的三個基本的方法及調用關係:
1,public boolean dispatchTouchEvent(MotionEvent ev)
方法描述:
此方法是隧道式分發。
如果此方法返回的是系統默認的 super.dispatchTouchEvent(ev)或者false時,會調用 onInterceptTouchEvent方法判斷是否攔截。


如果返回的是true會調用onTouchEvent進行消費。不再向下傳遞。


2,public boolean onInterceptTouchEvent(MotionEvent ev)  
方法描述:

如果此方法的返回值是默認的super.onInterceptTouchEvent(ev)
那麼將會調用ontouch方法處理,不會被攔截

如果返回值是false,那麼將會放行並且調用子控件的dispatchTouchEvent交給子類去處理。

如果此方法的返回值是true,那麼將會調用onTouchEvent來處理事件。並且事件將會被攔截。



3,public boolean onTouchEvent(MotionEvent ev)
方法描述:
此方法的傳遞很特殊,是向上傳遞的,又叫做冒泡式響應。
如果此方法返回的是false,或者是默認的super.onTouchEvent(ev) 
那麼將會向上傳遞給上級的onTouchEvent事件,如果上級也返回false,那麼事件將會消失,並且而且接收不到下一次事件。
如果返回的是true,則不再向上傳遞。接收並消費該事件。


如圖所示,圖片詳細描述了一個點擊事件從外向內進行分發的整個過程。先是隧道式分發,然後冒泡式響應。


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