Android事件分發機制

 


經過圖片,咱們可以知道 
全部disPatchTouchEvent()方法(除Activity) 
return true 事件消費 
retur false 事件回傳父類的onTouchEvent() 
return super() 事件向下傳遞 
全部的dispatchTouchEvent()和onTouchEvent()方法,一旦return true,則事件就被消費,沒有誰可以接收到這個事件了 
 spa

 


全部的dispatchTouchEvent()和onTouchEvent()方法return false的時候,都會回傳給父控件的onTouchEvent()方法處理 
 blog

 


若是事件不中斷,則整個事件爲U型傳遞,也就是一直return super() 
 事件

 


onInterceptTouchEvent()方法的做用,每一個ViewGroup都會有onInterceptTouchEvent()方法來判斷是否須要攔截事件,若是返回true,則會將事件傳遞到本身的onTouchEvent()方法中,若是返回false和super(),則表示不攔截,向下繼續傳遞事件 
 圖片

 


ViewGroup怎麼將事件傳遞到本身onTouchEvent()呢,ViewGroup的disPatchTouchEvent()方法 
return true,則事件消費,再也不傳遞 
return false,則事件傳遞到父控件的onTouchEvent()方法 
return super() ,將事件傳遞到onInterceptTouchEvent()方法,而後return true以後,才能本身處理本身的onTouchEvent 
View怎麼將事件傳遞到本身的onTouchEvent()呢?View 沒有onInterceptTouchEvent()方法,只有disPatchTouchEvent()方法 
return true則事件消費 
return false 則事件傳給ViewGroup的onTouchEvent()方法 
return super()則事件傳遞給本身的onTouchEvent()it

相關文章
相關標籤/搜索