Android事件分發(fā)機(jī)制

1).Android事件分發(fā)機(jī)制的本質(zhì)是要解決:點(diǎn)擊事件由哪個(gè)對(duì)象發(fā)出,經(jīng)過(guò)哪些對(duì)象,最終達(dá)到哪個(gè)對(duì)象并最終得到處理。這里的對(duì)象是指Activity、ViewGroup、View.

2).Android中事件分發(fā)順序:Activity(Window) -> ViewGroup -> View.

3).事件分發(fā)過(guò)程由dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()三個(gè)方法協(xié)助完成

設(shè)置Button按鈕來(lái)響應(yīng)點(diǎn)擊事件事件傳遞情況:(如下圖)

布局如下:


最外層:Activiy A,包含兩個(gè)子View:ViewGroup B、View C

中間層:ViewGroup B,包含一個(gè)子View:View C

最內(nèi)層:View C

假設(shè)用戶首先觸摸到屏幕上View C上的某個(gè)點(diǎn)(如圖中黃色區(qū)域),那么Action_DOWN事件就在該點(diǎn)產(chǎn)生,然后用戶移動(dòng)手指并最后離開(kāi)屏幕。

按鈕點(diǎn)擊事件:

DOWN事件被傳遞給C的onTouchEvent方法,該方法返回true,表示處理這個(gè)事件;

因?yàn)镃正在處理這個(gè)事件,那么DOWN事件將不再往上傳遞給B和A的onTouchEvent();

該事件列的其他事件(Move、Up)也將傳遞給C的onTouchEvent();


//https://blog.csdn.net/salmon_zhang/article/details/76746159

https://blog.csdn.net/u013637594/article/details/82493350


?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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