2017-09-09 55 views
0

我已經倒計時了,這是由ProgressBar顯示併成功。但不幸的是有問題。Java Android,倒數計時器和ProgressBar(讀取第一個)

  1. progressBar從1/5開始,而不是0/5。和陷進在2秒4/5進步
  2. 如果我還記得倒計時器的功能之前

    public void onFinish() { 
    progresBar.setProgress(100); 
    
    } 
    

顯示將是一團糟了一段時間。

我真的懷念Unity引擎Time.deltaTime;

這裏是我的代碼:

countDownTimer2 = new CountDownTimer(5000,1000) { 
     int i = 0; 
     @Override 
     public void onTick(long milliSecondUntilFinished) { 
      i++; 
      progresBar.setProgress((int) i * 100/(5000/1000)); 
     } 

     @Override 
     public void onFinish() { 

      progresBar.setProgress(100); 

     } 
    }.start(); 
+0

「如果我記得倒數計時器的功能」 - 您能顯示代碼在哪裏打電話嗎?你是否使用相同的對象進行調用? 感謝:-) –

+0

btnSubmit.setOnClickListener(新View.OnClickListener(){ @覆蓋 公共無效的onClick(查看視圖){ 如果(input.getText()。的toString()。等於(questionNumber)){ rightAnswer ();} 否則{ wrongAnswer();} getRandomQuestion();} }); – Jon

+0

Countdown Timer裏面的getRandomQuestion(); – Jon

回答

1

設置您的進展之前,你遞增您i變量。當第一次調用onTick()時,i的值爲1。因此您設置的進度是20,相當於1/5。使用此 -

@Override 
      public void onTick(long milliSecondUntilFinished) { 
       progresBar.setProgress((int) i * 100/(5000/1000)); 
       i++; 
      } 

此外,你應該更好地利用milliSecondUntilFinished找到進步,而不是unneccesarily引入i變量。

對於顯示器的問題,我非常懷疑在調用新的計時器之前,您還沒有取消已經運行的計時器。如果是的話,那麼兩個計時器都會運行,直到更老的計時器結束(直到這一點,進度條會表現怪異)。

可以取消以前的計時器作爲 -

countDownTimer2.cancel(); 

開始一個新之前執行此操作。

+0

只是幫助從0/5開始,但沒有解決4/5的混亂和2秒。 – Jon

+0

@Jon請看編輯。此外,發佈更多的代碼爲您的其他問題,即堅持在4/5兩秒鐘。 –

+0

什麼代碼取消以前的倒數計時器....以防止兩個計時器沿着 – Jon

0
use 
countDownTimer2 = new CountDownTimer(1000,5000) { 
     int i = 0; 
     @Override 
     public void onTick(long milliSecondUntilFinished) { 
      i++; 
      progresBar.setProgress((int) i * 100/(5000/1000)); 
     } 
     @Override 
     public void onFinish() { 

      progresBar.setProgress(100); 

     } 
    }.start(); 
+0

將新的CountDownTimer(** 1000,5000 **) – Jon