Android
Odliczanie czasu
Szukaj…
Parametry
Parametr | Detale |
---|---|
long millisInFuture | Całkowity czas działania timera, czyli jak daleko w przyszłości chcesz zakończyć timer. W milisekundach. |
long countDownInterval | Interwał, w którym chcesz otrzymywać aktualizacje timera. W milisekundach. |
long millisUntilFinished | Parametr podany w onTick() który mówi, ile czasu pozostało CountDownTimer. W milisekundach |
Uwagi
CountDownTimer jest dość szczupłą klasą - robi jedną rzecz bardzo dobrze. Ponieważ możesz uruchomić / anulować CountDownTimer, musisz zaimplementować funkcję pauzy / wznowienia, jak pokazano w drugim przykładzie. Aby uzyskać bardziej złożoną funkcjonalność lub określić licznik czasu, który powinien działać bez końca, użyj obiektu Timer .
Tworzenie prostego minutnika
CountDownTimer jest przydatny do wielokrotnego wykonywania akcji w ustalonych odstępach czasu przez określony czas. W tym przykładzie będziemy aktualizować widok tekstu co sekundę przez 30 sekund, informując o pozostałym czasie. Następnie, gdy czas dobiegnie końca, ustawimy TextView na „Gotowe”.
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();
Bardziej złożony przykład
W tym przykładzie wstrzymamy / wznowimy CountDownTimer na podstawie cyklu życia działania.
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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow