【Android】View、ViewGroup事件分發

一、事件分發注意基本點:

1、我們觸摸手機屏幕主要三種事件類型進行分析,
     (1)ACTION_DOWN 
     (2)ACTION_UP
     (3)ACTION_MOVE
2、我們要清楚,View和ViewGroup事件分發,是從Activity--->ViewGroup--->View;
3、事件消費是從View--->ViewGroup--->Activity;
4、只有ViewGroup有事件攔截方法,onInterceptOnTouchEvent方法;

二、Activity、ViewGroup、View事件傳遞方法的異同點

1、Activity、ViewGroup、View的dispatchTouchEvent在return super的時候纔會分發到下一步;
2、Activity、ViewGroup、View的dispatchTouchEvent在return true的時候不會分發到下一步,且自己消費;
3、特別注意Activity的dispatchTouchEvent在return false的時候不會分發到下一步,且自己消費;
4、ViewGroup、View的dispatchTouchEvent在return false的時候不會分發到下一步,而是將事件返回給上一級的onTouchEvent消費;
5、ViewGroup的onInterceptOnTouchEvent在return true時, 會將事件攔截並傳遞給自己的onTouchEvent去消費;
6、ViewGroup的onInterceptOnTouchEvent在return false、super時, 會將事件傳遞給下一級;
7、ViewGroup、View的onTouchEvent在return false、super時,都會將消費事件返回給上一級去消費;
8、Activity、ViewGroup、View的onTouchEvent在return true,都會消費掉本次事件

如圖所示:

 

三、總結

1、當ACTION_DOWN    Activity、ViewGroup、View沒有被消費,那麼ACTION_MOVE 、ACTION_UP 不會被分發下一級;
2、當事件被消費,事件就不會再被傳遞,且ACTION_MOVE 、ACTION_UP 不會被分發下一級;
3、當事件被攔截,事件也不會再向下被分發,且ACTION_MOVE 、ACTION_UP 不會被分發下一級;
4、當事件分發返回true也不會再分發,且被分發方法自己消費
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章