事件指的是觸摸事件,分發(fā),為什么要分發(fā)呢,就像你給自己的外甥發(fā)紅包一樣,這樣也叫分發(fā),那么這樣就有viewgroup,viewgroup里面有子view,ViewGroup的相關(guān)事件有三個(gè):onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。View的相關(guān)事件只有兩個(gè):dispatchTouchEvent、onTouchEvent。
簡(jiǎn)單的來(lái)說(shuō)就是viewgroup遍歷自己的子view,如果子view中有viewgroup,就繼續(xù)遍歷這個(gè)viewgroup的子view,都是調(diào)用的dispatchTouchEvent來(lái)分發(fā)事件,dispatchTouchEvent會(huì)返回一個(gè)布爾值類(lèi)型的參數(shù),事件會(huì)一直分開(kāi),一直在某個(gè)view調(diào)用dispatchTouchEvent返回true,表示事件分發(fā)到此結(jié)束,返回true的這個(gè)view就是需要接受這個(gè)事件的view,
ViewGroup的dispatchTouchEvent是真正在執(zhí)行“分發(fā)”工作,而View的dispatchTouchEvent方法,并不執(zhí)行分發(fā)工作,或者說(shuō)它分發(fā)的對(duì)象就是自己,決定是否把touch事件交給自己處理,而處理的方法,便是onTouchEvent事件,這里說(shuō)到了view的onTouchEvent事件是這個(gè)時(shí)候開(kāi)始執(zhí)行,那么viewgroup的onTouchEvent什么時(shí)候執(zhí)行呢?,當(dāng)所有的子view調(diào)用dispatchTouchEvent都是返回false的時(shí)候,這個(gè)時(shí)候viewgroup的onTouchEvent就會(huì)執(zhí)行
事實(shí)上,一次完整的Touch事件,應(yīng)該是由一個(gè)Down、一個(gè)Up和若干個(gè)Move組成的
但是dispatchTouchEvent只是分發(fā)了Down事件,只有返回true的時(shí)候,證明這個(gè)view需要 這個(gè)事件,然后在繼續(xù)分發(fā)Up和Move事件給它