Android事件傳遞機(jī)制

Activity、ViewGroup、View 三者的事件傳遞機(jī)制。

一次完成事件傳遞主要包含三個(gè)階段,分發(fā)、傳遞、消費(fèi)。

觸摸事件包括三個(gè)類型

ACTION_DOWN?

ACTION_MOVE

ACTION_UP

分別代表用戶觸摸屏幕時(shí)候的三個(gè)動(dòng)作,由MotionEvent類負(fù)責(zé)管理。

第一階段 分發(fā)

dispatchTouchEvent()? 該方法返回true 表示當(dāng)前視圖消費(fèi),不再進(jìn)行分發(fā),如果返回值為 super.dispatchTouchEvent() 則表示繼續(xù)分發(fā)。

如果當(dāng)前視圖時(shí)ViewGroup 及其子類,則會(huì)調(diào)用 onInterceptTouchEvent()方法判斷是否攔截次事件。

第二階段 攔截

onInterceptTouchEvent() 該方法返回true 表示攔截該事件,不繼續(xù)分發(fā)給子視圖,同時(shí)交給自身的onTouchEvent()方法進(jìn)行消費(fèi)。

返回false或者super.onInterceptTouchEvent()則表示不攔截該事件,繼續(xù)傳給子視圖

第三階段 消費(fèi)

onTouchEvent() 該方法返回true 表示該事件由當(dāng)前視圖處理,事件將不再交還給父視圖的onTouchEvent方法處理。

Android 系統(tǒng)中有事件處理能力的有三個(gè)

Activity:擁有dispatchTouchEvent()和 onTouchEvent()

ViewGroup:擁有dispatchTouchEvent() 、onInterceptTouchEvent()、onTouchEvent()

View:擁有dispatchTouchEvent()、onTouchEvent()方法

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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