我的應用需要檢查用戶是否雙擊。但我不能使用Android OnDoubleClickListener或類似的東西。只是實現它:Android如何爲UI事件編寫簡單的計時器?
我的問題是從「正常」雙擊不同。
我想要的是: 如果用戶雙擊,運行Y活動。 如果用戶只點擊1次點擊,請等待500毫秒,然後運行X活動。 如果用戶點擊2點擊慢,運行X活性
這是我的代碼:
long now = System.currentTimeMillis();
thisTime = now;
if (thisTime - lastTouchTime < WAIT_TIME) {
// Double tap
this.getContext()
.getApplicationContext()
.startActivity(
(new Intent(getContext(),
ChangePlaceActivity.class))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
// If is double tap, reset to start state.
lastTouchTime = -1;
return true;
} else {
// Too slow or first click
// If not double tap, save last state for next check
lastTouchTime = thisTime;
Log.d("Worker thread", "Declare" + System.currentTimeMillis());
Thread t = new Thread() {
public void run()
{
try {
sleep(WAIT_TIME);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
try {
t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("Worker thread", "" + System.currentTimeMillis());
// start MainAct
Log.d("Single Click", "Yes");
this.getContext()
.getApplicationContext()
.startActivity(
(new Intent(getContext(),
MainActivity.class))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
如果這樣使用的代碼,我無法把雙擊。如果刪除thread.run()thread.join()。它將在ChangePlacecActivity之前啓動MainActivity。
有沒有解決這個問題的方法? 提前謝謝!
對不起,我的英語不好。
爲什麼不在第一次敲擊後啓動計時器?如果您在定時器啓動之前已經跟蹤了一次水龍頭並獲得了另一個水龍頭,請運行雙擊代碼。如果定時器首先啓動,請運行您的X代碼。這是事件驅動UI工作的方式。請永遠不要調用睡眠,特別是在UI線程中。 – 2012-01-10 04:42:27
@Jason Coco:我知道不應該阻止UI線程。計時器是我需要但不知道如何。請給出答案。謝謝! – HVNSweeting 2012-01-10 04:48:04
我不知道如何在Android中編寫計時器。我建議你編輯你的問題並命名爲「我如何爲UI事件編寫一個簡單的計時器?」。您可以保留問題的其餘部分,並留下這些評論。我相信你會得到答案。 – 2012-01-10 04:53:21