讓你分分鍾明白onTouchEvent事件分發


首先確定有三種,由內向外依次為:

1、View自己的onTouchEvent

2、ViewGroup的onTouchEvent,由於要管理它的子View的onTouchEvent,所以多了個onInterceptTouchEvent(鼓勵重載這個而不是dispatchTouchEvent,因為后者是對ViewGroup共性的提取,前者才是針對個例)

3、Activity的onTouchEvent

三者都是先處理setOnTouchEvent的onTouch事件,返回true表示不想下傳遞,就不進入到onTouchEvent中了

先說ViewGroup的onInterceptTouchEvent,兩種情況:

    ①、返回值為True,代表攔截這次事件,直接進入到ViewGroup的onTouchEvent中,就不會進入到View的onTouchEvent了

    ②、返回值為False,代表不攔截這次事件,不進入到ViewGroup的onTouchEvent中,直接進入到View的onTouchEvent中

再說三者的onTouchEvent:

   ①、View的onTouchEvent返回為false表示view處理完onTouchEvent后不消費這次事件,那么這個事件就會繼續傳遞到他的上一層ViewGroup的onTouchEvent事件中,返回true的話就傳遞完畢,進入不到ViewGroup的onTouchEvent中了

  ②、ViewGrop的onTouchEvent返回為false表示這個ViewGroup處理完onTouchEvent后不消費這次事件,這個事件就會繼續傳遞到activity的onTouchEvent中,返回為true的話就傳遞完畢,進入不到activity的onTouchEvent中了

  ③、activity的onTouchEvent,就這樣吧 `(*∩_∩*)′

 

總之,如果最里層的返回false就會交給他的上一層處理,否則就會消費這次事件,停止傳遞,over!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM