Chronometer
2193 ワード
概要
公式に提供されている簡易版時間表示コントロールGoogle転送ゲート
タイミング機能計時開始 計時停止 リセット時間 カウントダウン(推奨なし)
カウントダウン機能ここではAndroid以上の使用を提供しているだけで、カウントダウンが終了してからもタイムリーに停止していない(OnChronometertTickListenerで時間が「00:00」かどうかを傍受して手動で停止することができる)、Handlerで代用したりCountDownTimerで代用したりすることができます.フォーマット時間 ChronometerはsetFormatを提供して時間をフォーマットしますが、元の時間フォーマットでしか文字の追加はできません.フォーマット時間00:00:00:00
59:59から1:00:00までは、事前に処理する必要があります.ここはリスニング後にフォーマットされているので、一歩遅れます.テスト推奨 初期時間をシステム時間に59分50秒後退させると、59:50から計時が始まります
公式に提供されている簡易版時間表示コントロールGoogle転送ゲート
タイミング機能
chronometer.start()
chronometer.stop()
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setBase(SystemClock.elapsedRealtime() + 60 * 1000L);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
chronometer.setCountDown(true);
}
chronometer.start();
カウントダウン機能ここではAndroid以上の使用を提供しているだけで、カウントダウンが終了してからもタイムリーに停止していない(OnChronometertTickListenerで時間が「00:00」かどうかを傍受して手動で停止することができる)、Handlerで代用したりCountDownTimerで代用したりすることができます.
chronometer.setFormat(" :%s");
// MM:SS
:00:00
// H:MM:SS
:1:00:00
timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
setFormat(timer);
}
});
private void setFormat(Chronometer chronometer){
int hour = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000 / 60 / 60);
int minute = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000 / 60) % 60;
int second = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000) % 60;
if (hour < 1) {
if (minute == 59 && second == 59) {
chronometer.setFormat("0" + "%s");
} else {
chronometer.setFormat("0" + String.valueOf(hour) + ":%s");
}
} else if (hour < 10) {
chronometer.setFormat("0" + "%s");
} else {
chronometer.setFormat("%s");
}
}
59:59から1:00:00までは、事前に処理する必要があります.ここはリスニング後にフォーマットされているので、一歩遅れます.
chronometer.setBase(SystemClock.elapsedRealtime()-59*60*1000L-50*1000L);