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

