2014-05-18 105 views
0

我是Android編程的新手,我試圖弄清楚如何將seekbar與我的計時器連接起來。在我的程序中,我允許用戶放入一段時間,然後單擊啓動計時器,然後將該值發送到TextView並遞減秒直到完成。我希望seekbar能夠「跟隨」。任何幫助,將不勝感激!Seekbar與計時器同步

我已經找到了跟蹤計時器的seekbar,但現在它的波動太大了......是否有一個簡單的方法可以順利進行?

public void startTimer() { 
    int min = Integer.parseInt(edit_minute.getText().toString()); 
    int sec = Integer.parseInt(edit_second.getText().toString()); 
    int value = (min * 60) + sec; 
    seek_bar.setMax(value *10000); 

    new CountDownTimer(getValues(), 1000) { // adjust the milli seconds here 

     public void onTick(long millisUntilFinished) { 


      text1.setText("" 
        + String.format(
          FORMAT, 
          TimeUnit.MILLISECONDS 
            .toHours(millisUntilFinished), 
          TimeUnit.MILLISECONDS 
            .toMinutes(millisUntilFinished) 
            - TimeUnit.HOURS 
              .toMinutes(TimeUnit.MILLISECONDS 
                .toHours(millisUntilFinished)), 
          TimeUnit.MILLISECONDS 
            .toSeconds(millisUntilFinished) 
            - TimeUnit.MINUTES 
              .toSeconds(TimeUnit.MILLISECONDS 
                .toMinutes(millisUntilFinished)))); 
      seek_bar.setProgress((seek_bar.getProgress() + 1)); 
     } 

     public void onFinish() { 
      text1.setText("done!"); 
     } 
    }.start(); 

回答

1

你只需要從你的CountDownTimer更新它。首先,創建一個實例變量:

SeekBar progressBar; 

在您onCreate,得到的搜索欄的引用:

progressBar = (SeekBar) findViewById(R.id.seek_bar_current); 

一旦你啓動計時器,告訴progressBar最大的就應該到:

progressBar.setMax(); // How ever long the timer will run for 

然後在CountDownTimer,更新進度:

progressBar.setProgress(); // The total time, minus millisUntilFinished 
+0

謝謝我添加了:'seek_bar.setProgress(seek_bar.getProgress()+ 1);'因爲setProgress只接受整數。你知道另一種方式嗎? – John