0

我有一个倒计时计时器,旨在读取时间并在特定时间停止。显示使用时间和剩余时间。我在我的活动中编写了一个样本。但是应该帮助我以 00:00:00 格式显示的功能不能正常工作。它仅在计时器停止时以该格式显示。

    public class PracticeQuestionActivity extends SherlockActivity implements OnClickListener {

private long timeElapsed;
    private boolean timerHasStarted = false;

    private final long startTime = 50000;
    private final long interval = 1000;

    MyCountDownTimer countdown = null;
    TextView timerText = null, ElaspedTime = null;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.practicequestion);

        context = PracticeQuestionActivity.this;

        initializeComponents(context);
        countdown = new MyCountDownTimer(startTime,interval);
        this.controlTimer(); //This is going to start the timer
    }

    private void controlTimer(){

        if (!timerHasStarted)
        {
            countdown.start();
            timerHasStarted = true;            
        }
    else
        {
            countdown.cancel();
            timerHasStarted = false;            
        }
    }

    //This is going to format the time value from duration in second
    private String setTimeFormatFromSeconds(long durationSeconds){

        return String.format("%02d:%02d:%02d", durationSeconds / 3600, (durationSeconds % 3600) / 60, (durationSeconds % 60));
    }


        //This method is going to be used to initialize the components of the view
    private void initializeComponents(Context context){

        timerText = (TextView)findViewById(R.id.timer);
        ElaspedTime = (TextView)findViewById(R.id.timeElapsed);

    }

     // CountDownTimer class
      public class MyCountDownTimer extends CountDownTimer
          {

              public MyCountDownTimer(long startTime, long interval)
                  {
                      super(startTime, interval);
                  }

              @Override
              public void onFinish()
                  {
                      timerText.setText("Time's up!");
                      ElaspedTime.setText("Time Elapsed: " + setTimeFormatFromSeconds(startTime));
                  }

              @Override
              public void onTick(long millisUntilFinished)
                  {
                      timerText.setText("Time remain:" + millisUntilFinished);
                      timeElapsed = startTime - millisUntilFinished;
                      ElaspedTime.setText("Time Elapsed: " + String.valueOf(timeElapsed));
                  }
          }

    }
4

2 回答 2

1

看看下面的代码 -

timeInMillies = SystemClock.uptimeMillis() - startTime;
   finalTime = timeSwap + timeInMillies;

   int seconds = (int) (finalTime / 1000);
   int minutes = seconds / 60;
   seconds = seconds % 60;
   int milliseconds = (int) (finalTime % 1000);
   textTimer.setText("" + minutes + ":"
     + String.format("%02d", seconds) + ":"
     + String.format("%03d", milliseconds));
   myHandler.postDelayed(this, 0);

阅读更多:http ://www.androidhub4you.com/2013/04/countdown-demo-in-android-custom-timer.html#ixzz2g65Y77ff

于 2013-09-27T12:55:19.253 回答
0

SimpleDateFormat是你的朋友:

private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");

@Override 
public void onFinish() {
     timerText.setText("Time's up!");
     ElaspedTime.setText("Time Elapsed: " + timeFormat.format(startTime);
}

@Override
public void onTick(long millisUntilFinished) {
    timerText.setText("Time remain:" + timeFormat.format(millisUntilFinished));
    timeElapsed = startTime - millisUntilFinished;
    ElaspedTime.setText("Time Elapsed: " + timeFormat.format(timeElapsed));
}
于 2013-09-27T12:33:02.270 回答