1).Android事件分發(fā)機(jī)制的本質(zhì)是要解決:點擊事件由哪個對象發(fā)出姚建,經(jīng)過哪些對象世杀,最終達(dá)到哪個對象并最終得到處理稚失。這里的對象是指Activity丽柿、ViewGroup振乏、View.
2).Android中事件分發(fā)順序:Activity(Window) -> ViewGroup -> View.
3).事件分發(fā)過程由dispatchTouchEvent() 蔗包、onInterceptTouchEvent()和onTouchEvent()三個方法協(xié)助完成
設(shè)置Button按鈕來響應(yīng)點擊事件事件傳遞情況:(如下圖)
布局如下:
最外層:Activiy A,包含兩個子View:ViewGroup B慧邮、View C
中間層:ViewGroup B调限,包含一個子View:View C
最內(nèi)層:View C
假設(shè)用戶首先觸摸到屏幕上View C上的某個點(如圖中黃色區(qū)域),那么Action_DOWN事件就在該點產(chǎn)生误澳,然后用戶移動手指并最后離開屏幕耻矮。
按鈕點擊事件:
DOWN事件被傳遞給C的onTouchEvent方法,該方法返回true忆谓,表示處理這個事件;
因為C正在處理這個事件裆装,那么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