2015-07-11 34 views
1

提問之前讓我告訴你,這個問題已經回答了很多次,但我沒有解決我的問題。 我試過this Questions答案但並不真正有幫助。如何在Android中啓動增量式定時器

所以問題是我在android中創建一個Mastermind遊戲,我想從00:00開始計時器,當用戶輸入第一個密碼時,直到用戶點擊最後一個PIN或當用戶點擊新遊戲計時器將重置並且不會啓動,直到用戶再次輸入第一個PIN。

因此,這裏是我的嘗試

Handler timerHandler = new Handler(); 
Runnable timerRunnable = new Runnable() { 

    @Override 
    public void run() { 
     long millis = System.currentTimeMillis() - startTime; 
     int seconds = (int) (millis/1000); 
     int minutes = seconds/60; 
     seconds = seconds % 60; 

     timerTextView.setText(String.format("%d:%02d", minutes, seconds)); 

     timerHandler.postDelayed(this, 500); 
    } 
}; 

功能來啓動或停止計時器

@Override 
public void onPause() { 
    super.onPause(); 
    timerHandler.removeCallbacks(timerRunnable); 
    timerCheck = true; 
} 

當用戶碰到的第一個PIN這段代碼執行

timerCheck = true; 
startTimer(); 

當用戶打到最後密碼此密碼執行

timerCheck = false; 
startTimer(); 

沒有什麼工作 請幫我啓動定時器,當第一個條件是True和停止計時器,當最後一個條件是真實的,如果NewGame撞到定時器將復位,並且不會開始,直到第一腳再次得到了命中之間。 任何幫助將不勝感激。 由於提前

回答

1

我解決我的問題,這裏是我如何做它

聲明

private Handler customHandler = new Handler(); 
private long startTime = 0L; 
long timeInMilliseconds = 0L; 
long timeSwapBuff = 0L; 
long updatedTime = 0L; 

要啓動定時器,當第一PIN輸入

startTime = SystemClock.uptimeMillis(); 
customHandler.postDelayed(updateTimerThread, 0); 

暫停計時器在最後PIN進入

timeSwapBuff += timeInMilliseconds; 
customHandler.removeCallbacks(updateTimerThread); 

主要的Runnable

private Runnable updateTimerThread = new Runnable() { 

    public void run() { 

     timeInMilliseconds = SystemClock.uptimeMillis() - startTime; 

     updatedTime = timeSwapBuff + timeInMilliseconds; 

     secs = (int) (updatedTime/1000); 
     mins = secs/60; 
     secs = secs % 60; 
     int milliseconds = (int) (updatedTime % 1000); 
     timerTextView.setText(String.format("%02d", mins) + ":" 
       + String.format("%02d", secs)); 
     customHandler.postDelayed(this, 0); 
    } 

}; 

它完全工作正常,我希望如此,它會爲你們太

工作
相關問題