通過(guò)源碼查看: View – dispatchTouchEvent方法中
onTouchListener的接口的優(yōu)先級(jí)是要高于onTouchEvent的,假若onTouchListener中的onTouch方法返回true庄吼,
表示此次事件已經(jīng)被消費(fèi)了徐鹤,那onTouchEvent是接收不到消息的韭赘。
如果給一個(gè)Button設(shè)置一個(gè)onTouchListener并且重寫onTouch方法扁掸,返回值為true,此時(shí)的Button的點(diǎn)擊事件還處理嗎乓诽?
答案是:
是得不到處理的坡氯。
由于Button的performClick是利用onTouchEvent實(shí)現(xiàn)晨横,假若onTouchEvent沒(méi)有被調(diào)用到,那么Button的Click事件也無(wú)法響應(yīng)箫柳。
這里可以查看源碼:
View – onTouchEvent方法手形,來(lái)說(shuō)明
總結(jié):
onTouchListener的onTouch方法優(yōu)先級(jí)比onTouchEvent高,會(huì)先觸發(fā)悯恍。
假如onTouch方法返回false會(huì)接著觸發(fā)onTouchEvent库糠,反之onTouchEvent方法不會(huì)被調(diào)用。
內(nèi)置諸如click事件的實(shí)現(xiàn)等等涮毫,都基于onTouchEvent瞬欧,假如onTouch返回true贷屎,這些事件將不會(huì)被觸發(fā)。
順序?yàn)?
onTouch—–>onTouchEvent—>onclick
了解了這個(gè),我們就可以在項(xiàng)目中針對(duì)具體情況使用了