2 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘗試使用預(yù)定義的方法 -
onClickListener( () => {} )
單擊onLongClickListener( () => {} )
長時(shí)間點(diǎn)擊
這樣你就不需要計(jì)算用戶點(diǎn)擊的時(shí)間,并且通過運(yùn)行循環(huán)或線程你可以在長時(shí)間點(diǎn)擊時(shí)不斷改變顏色。
更新
正如評(píng)論中提到的,它只需要一個(gè)特定的時(shí)間使用以下算法-
長按按鈕啟動(dòng)計(jì)時(shí)器
2 秒后立即應(yīng)用結(jié)果
** 更新**
由于需要點(diǎn)擊時(shí)間,請(qǐng)遵循:
在按鈕定義之前創(chuàng)建一個(gè)計(jì)時(shí)器
使用長按列表器啟動(dòng)計(jì)時(shí)器
在停止計(jì)時(shí)器的動(dòng)作上,您會(huì)得到結(jié)果

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
我找到了一個(gè)簡(jiǎn)單的解決方案來研究長按事件的工作原理。每次單擊視圖時(shí),都會(huì)延遲Runnable將類型CheckForLongPress添加到隊(duì)列中。如果延遲結(jié)束,OnLongClickListener則調(diào)用。如果在延遲結(jié)束之前有不同的事件,則將CheckForLongPress Runnable其從隊(duì)列中移除。
我只是覆蓋postDelayed(Runnable action, long delayMillis)視圖的公共方法來更改操作系統(tǒng)延遲
@Override public boolean postDelayed(Runnable action, long delayMillis) {
boolean isLongPress = action.getClass().getSimpleName().equals("CheckForLongPress");
return super.postDelayed(action, isLongPress ? LONG_PRESS_MILLIS : delayMillis);
}
我設(shè)置LONG_PRESS_MILLIS為 100,它正在工作!
希望能幫助到你!??!;)
圖片來源: MArtinCR
添加回答
舉報(bào)