Android 事件沖突

單點(diǎn)的Down 事件

dispatchTouchEvent(MotionEvent ev)

來處理事件分發(fā)(View 只能消耗事件,走ontouchlister 和onclicklister)
onInterceptTouchEvent
來返回是否攔截,攔截的話就自己處理,不攔截繼續(xù)分發(fā);
點(diǎn)擊之后無子view或者點(diǎn)擊事件沒有在子view 上,視為無子view處理


image.png

dispatchTransformedTouchEvent

onInterceptTouchEvent 為false時(shí)候,會(huì)調(diào)用此函數(shù)來循環(huán)分發(fā),如果都沒有人處理的話,由dispatchTouchEvent 自己處理相當(dāng)于onInterceptTouchEvent=true
當(dāng)某個(gè)子View 處理后,會(huì)生成一盒hand來告知上層ViewGropel有view 已經(jīng)處理;下次也是單點(diǎn)事件也是有此view 處理


image.png

滑動(dòng)事件

滑動(dòng)事件不再做事件的分發(fā),只有down事件來做分發(fā);
正常流程:down 誰來處理move 事件誰就來處理
攔截流程:
父類攔截發(fā)法:比較簡(jiǎn)單,直接用onInterceptTouchEvent來做處理;
子類攔截法: 也是首先onInterceptTouchEvent來設(shè)置為false(down事件會(huì)重置初始值),
getParent().requestDisallowInterceptTouchEvent(true);來讓設(shè)父viewGrop gorpflag 為true來接受不到是否攔截的的表達(dá),失去攔截處理,最后落到子view的身上;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容