2 回答

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

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