格式化倒数计时器,00:00:00无效。显示00:00:00直到暂停,然后显示剩余时间

时间:2010-10-16 19:45:38

标签: android

我试图从http://helloandroidworld.com/2010/02/how-to-create-a-simple-android-countdown-timer/创建一个倒计时器,但是我无法使用文章中描述的00:00:00格式。计时器将启动并允许我暂停它,它将运行两分钟,但你看不到它在运行。如果你暂停它,你可以看到剩余多少时间但你无法让它工作。没有格式化它工作正常并倒计时。有没有人有这个工作或知道如何解决它?我一直在搜索,找不到任何像这样的倒数计时器的格式化。任何帮助将不胜感激。

  TextView timeDisplay;
  MyCount counter;
  int state = 0;
  int length = 120000;
  long startTime = 0;
  long currentTime = 0;
  long timeElapsed = 0;
  long timeRemaining = 0;
  long prevTimeRemaining = 0;
  Button control;

    public String formatTime(long millis) {
          String output = "00:00:00";
          long seconds = millis / 1000;
          long minutes = seconds / 60;
          long hours = minutes / 60;

          seconds = seconds % 60;
          minutes = minutes % 60;
          hours = hours % 60;

          String secondsD = String.valueOf(seconds);
          String minutesD = String.valueOf(minutes);
          String hoursD = String.valueOf(hours); 

          if (seconds < 10)
            secondsD = "0" + seconds;
          if (minutes < 10)
            minutesD = "0" + minutes;
          if (hours < 10)
            hoursD = "0" + hours;

          output = hoursD + " : " + minutesD + " : " + secondsD;
          return output;
        }

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.countdown);

    timeDisplay = (TextView) findViewById(R.id.timer);
    control = (Button) findViewById(R.id.control);
    counter = new MyCount (length, 1000);
  }

  public void control(View view) {
    switch (state) {
    case 0:
      startTime = System.currentTimeMillis();
      counter.start();
      control.setText(R.string.pause);
      state = 1;
      break;
    case 1:
      // pause
      currentTime = System.currentTimeMillis();
      timeElapsed = currentTime - startTime;
      if (prevTimeRemaining == 0)
        timeRemaining = length - timeElapsed;
      else
        timeRemaining = prevTimeRemaining - timeElapsed;
      counter.cancel();
      timeDisplay.setText("" + formatTime(timeRemaining));
      control.setText(R.string.resume);
      prevTimeRemaining = timeRemaining;

      // resume
      counter = new MyCount(timeRemaining, 1000);
      state = 0;
      break;
    case 2:
      prevTimeRemaining = 0;
      counter = new MyCount(length, 1000);
      control.setText(R.string.start);
      timeDisplay.setText(R.string.timer);
      state = 0;
    }
  }

  public class MyCount extends CountDownTimer {

    public MyCount(long millisInFuture, long countDownInterval) {
      super(millisInFuture, countDownInterval);
    }

    public void onFinish() {
      timeDisplay.setText("done!");
      state = 2;
     control.setText(R.string.restart);
    }

    public void onTick (long millisUntilFinished) {
      timeDisplay.setText ("Left: " + formatTime(timeRemaining));

    }

  }

}

1 个答案:

答案 0 :(得分:0)

'+'运算符的优先级高于除法。因此,您尝试将字符串除以100.您可以使用括号来表示顺序。

http://bmanolov.free.fr/javaoperators.php