2014-05-18 31 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