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 に答える