Button的onTouch,onClick或油,onLongClick事件發(fā)生先后順序和關(guān)聯(lián):
一寞忿,onTouch返回false
首先是onTouch事件的down事件發(fā)生,此時(shí)顶岸,如果長按腔彰,觸發(fā)onLongClick事件;
然后是onTouch事件的up事件發(fā)生辖佣,up完畢霹抛,最后觸發(fā)onClick事件。
二卷谈,onTouch返回true
首先是onTouch事件的down事件發(fā)生上炎,然后是onTouch事件的up事件發(fā)生;期間不觸發(fā)onClick和onLongClick事件
三雏搂,onTouch:down返回true藕施,up返回false:結(jié)果同二。
機(jī)制分析:
onTouch事件中:down事件返回值標(biāo)記此次事件是否為點(diǎn)擊事件(返回false凸郑,是點(diǎn)擊事件裳食;返回true,不記為點(diǎn)擊事件)芙沥,而up事件標(biāo)記此次事件結(jié)束時(shí)間诲祸,也就是判斷是否為長按。
只要當(dāng)down返回true時(shí)候而昨,系統(tǒng)將不把本次事件記錄為點(diǎn)擊事件救氯,也就不會(huì)觸發(fā)onClick或者onLongClick事件了。因此盡管當(dāng)up的時(shí)候返回false歌憨,系統(tǒng)也不會(huì)繼續(xù)觸發(fā)onClick事件了着憨。
四,onTouch:down返回false务嫡,up返回true:
首先是onTouch事件的down事件發(fā)生甲抖,此時(shí):
長按漆改,觸發(fā)onLongClick事件,然后是onTouch事件的up事件發(fā)生准谚,完畢挫剑。
短按,先觸發(fā)onTouch的up事件柱衔, 到一定時(shí)間后樊破,自動(dòng)觸發(fā)onLongClick事件。
機(jī)制分析:
onTouch事件中:down事件返回值標(biāo)記此次事件是否為點(diǎn)擊事件(返回false唆铐,是點(diǎn)擊事件捶码;返回true,不記為點(diǎn)擊事件)或链,而up事件標(biāo)記此次事件結(jié)束時(shí)間惫恼,也就是判斷是否為長按。
當(dāng)down返回false澳盐,標(biāo)記此次事件為點(diǎn)擊事件祈纯,而up返回了true,則表示此次事件一直沒有結(jié)束叼耙,也就是一直長按下去了腕窥,達(dá)到長按臨界時(shí)間后,自然觸發(fā)長按事件筛婉,而onClick事件沒有觸發(fā)到
上述是網(wǎng)上的一篇博客所寫簇爆,原文地址https://my.oschina.net/caikezhan/blog/68316
因和朋友討論了相關(guān)問題,才引發(fā)去查相關(guān)資料
問題:
下圖這樣寫當(dāng)返回false時(shí)也不會(huì)觸發(fā)onClick事件爽撒。
image.png
image.png
通過上面資料分析down和up屬同一次事件入蛆,有一個(gè)返回false就不會(huì)再觸發(fā)onClick和onLongClick事件。
后改成下圖代碼硕勿,觸發(fā)正常哨毁。
image.png