Android
Contador regresivo
Buscar..
Parámetros
Parámetro | Detalles |
---|---|
long millisInFuture | La duración total a la que se ejecutará el temporizador, también conocido como hasta qué punto en el futuro desea que finalice el temporizador. En milisegundos. |
long countDownInterval | El intervalo en el que desea recibir actualizaciones de temporizador. En milisegundos. |
long millisUntilFinished | Un parámetro proporcionado en onTick() que indica cuánto tiempo ha permanecido el CountDownTimer. En milisegundos |
Observaciones
CountDownTimer es una clase bastante magra, que hace una cosa muy bien. Como solo puede iniciar / cancelar un CountDownTimer, debe implementar la funcionalidad de pausa / reanudación como se muestra en el segundo ejemplo. Para una funcionalidad más compleja, o para especificar un temporizador que debe ejecutarse indefinidamente, use el objeto Timer .
Creando un simple temporizador de cuenta regresiva
CountDownTimer es útil para realizar repetidamente una acción en un intervalo estable durante un tiempo determinado. En este ejemplo, actualizaremos una vista de texto cada segundo durante 30 segundos para indicar cuánto tiempo queda. Luego, cuando el temporizador finalice, configuraremos TextView para que diga "Listo".
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();
Un ejemplo más complejo
En este ejemplo, haremos una pausa / reanudaremos el CountDownTimer basado en el ciclo de vida de la actividad.
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;
}