dispatchTouchEvent與onTouchEvent

事件指的是觸摸事件,分發(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事件給它

?著作權(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)容