通過(guò)源碼查看: View – dispatchTouchEvent方法中
可以看出:
onTouchListener的接口的優(yōu)先級(jí)是要高于onTouchEvent的茧球,假若onTouchListener中的onTouch方法返回true,
表示此次事件已經(jīng)被消費(fèi)了星持,那onTouchEvent是接收不到消息的抢埋。
那么思考:
如果給一個(gè)Button設(shè)置一個(gè)onTouchListener并且重寫(xiě)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
原文鏈接:https://blog.csdn.net/fenganit/article/details/53750265