首先確定有三種,由內向外依次為:
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!