Android
カウントダウンタイマー
サーチ…
パラメーター
パラメータ | 詳細 |
---|---|
long millisInFuture | タイマーが実行される総継続時間(将来、タイマーを終了させるまでの時間)。ミリ秒単位。 |
long countDownInterval | タイマーの更新を受信する間隔です。ミリ秒単位。 |
long millisUntilFinished | CountDownTimerの残り時間をonTick() で提供されるパラメータです。ミリ秒単位 |
備考
CountDownTimerは非常に希薄なクラスです - それはとてもうまくいきます。 CountDownTimerを開始/キャンセルできるのは2番目の例に示すように、一時停止/再開機能を実装する必要があります。より複雑な機能や無期限に実行するタイマーを指定するには、 Timerオブジェクトを使用します。
シンプルなカウントダウンタイマーの作成
CountDownTimerは、設定した期間、一定の間隔で繰り返しアクションを実行する場合に便利です。この例では、毎秒30秒間テキストビューを更新し、残り時間を示します。タイマーが終了すると、TextViewに「完了」と設定されます。
TextView textView = (TextView)findViewById(R.id.text_view);
CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
}
public void onFinish() {
textView.setText("Done.");
}
}.start();
より複雑な例
この例では、アクティビティのライフサイクルに基づいてCountDownTimerを一時停止または再開します。
private static final long TIMER_DURATION = 60000L;
private static final long TIMER_INTERVAL = 1000L;
private CountDownTimer mCountDownTimer;
private TextView textView;
private long mTimeRemaining;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.text_view); // Define in xml layout.
mCountDownTimer = new CountDownTimer(TIMER_DURATION, TIMER_INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
mTimeRemaining = millisUntilFinished; // Saving timeRemaining in Activity for pause/resume of CountDownTimer.
}
@Override
public void onFinish() {
textView.setText("Done.");
}
}.start();
}
@Override
protected void onResume() {
super.onResume();
if (mCountDownTimer == null) { // Timer was paused, re-create with saved time.
mCountDownTimer = new CountDownTimer(timeRemaining, INTERVAL) {
@Override
public void onTick(long millisUntilFinished) {
textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
timeRemaining = millisUntilFinished;
}
@Override
public void onFinish() {
textView.setText("Done.");
}
}.start();
}
}
@Override
protected void onPause() {
super.onPause();
mCountDownTimer.cancel();
mCountDownTimer = null;
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow