事件因素:Activity --> ViewGroup --> View
一密强、Activity中攔截事件
1县遣,Activity_dispatch攔截弧烤,返回false的情況
? ? ? Activity_dispatch --> DOWN / UP / MOVE --> 分發(fā)結(jié)束
2椰棘,Activity_dispatch攔截,返回true的情況
? ? ? Activity_dispatch --> DOWN / UP / MOVE --> 分發(fā)結(jié)束
3叨恨,Activity_onTouchEvent攔截,返回false的情況
? ? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
? ? ? (MOVE / UP事件挖垛,ViewGroup_dispatch將不再執(zhí)行) Activity_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
4痒钝,Activity_onTouchEvent攔截秉颗,返回true的情況
? ? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
? ? ? (MOVE / UP事件,ViewGroup_dispatch將不再執(zhí)行) Activity_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
二送矩、ViewGroup中攔截事件
1站宗,ViewGroup_dispatch 攔截,返回false的情況
? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
? ? (MOVE / UP事件益愈,ViewGroup_dispatch將不再執(zhí)行) Activity_dispatch --> Activity_onTouchEvent --> 分發(fā)結(jié)束
2梢灭,ViewGroup_dispatch 攔截,返回true的情況
? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> 分發(fā)結(jié)束
? ? (MOVE / UP事件)? Activity_dispatch --> ViewGroup_dispatch --> 分發(fā)結(jié)束
3蒸其,ViewGroup_intercept 攔截敏释,返回false的情況(默認)
? ? ? (DOWN / UP / MOVE) Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onIntercept --> View_dispatch --> View_onTouchEvent --> 分發(fā)結(jié)束
4,ViewGroup_intercept 攔截摸袁,返回true的情況(默認)
? ? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onIntercept --> ViewGroup_onTouchEvent --> 分發(fā)結(jié)束
? ? ? (MOVE / UP 事件钥顽,ViewGroup_onIntercept返回true后,不再調(diào)用)? Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onTouchEvent --> 分發(fā)結(jié)束
5靠汁,ViewGroup_intercept 根據(jù)條件判斷攔截蜂大,不攔截DOWN事件,攔截MOVE事件
? ? ? (DOWN事件) Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onIntercept --> View_dispatch --> View_onTouchEvent --> 分發(fā)結(jié)束
? ? ? (首次 MOVE事件攔截蝶怔,此次事件分發(fā)奶浦,雖然攔截了MOVE事件,但還會繼續(xù)下發(fā)踢星。不同之處在于澳叉,view接收到的事件不是MOVE而是CANCLE)
? ? ? Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onIntercept --> View_dispatch --> View_onTouchEvent --> 分發(fā)結(jié)束
? ? (再次 MOVE事件攔截,ViewGroup_onIntercept將不再調(diào)用)
? ? ? Activity_dispatch --> ViewGroup_dispatch --> ViewGroup_onTouchEvent -- > 分發(fā)結(jié)束
6沐悦,UP事件一般不做攔截成洗。