Haga que el temporizador de cuenta regresiva pase de 10sec a 1sec

Tengo un temporizador CountDown que cuenta de 10000ms a 0ms en incrementos de 1 segundo cada uno para hacer que un botón haga clic después de 10 segundos. Aunque el temporizador es preciso y hace lo que el código dice, me gustaría cambiar la forma en que los segundos se expresan, pero no sé cómo.

Java:

void startTimer() { cTimer = new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { c.setText("Please wait " + millisUntilFinished/1000 + " seconds"); thx.setText(millisUntilFinished/1000 + ""); thx.setAlpha(.5f); thx.setClickable(false); } public void onFinish() { c.setText("done"); thx.setText("ready"); thx.setAlpha(1f); thx.setClickable(true); } }; cTimer.start(); } 

Salida (Cada segundo): 9, 8, 7, 6, 5, 4, 3, 2, 1, (still 1), ready

Deseado: (Cada segundo): 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ready

Gracias,

segundo

EDITAR:

He añadido 1 a la cuenta atrás, thx.setText(((millisUntilFinished/1000) + 1) + "");

Nueva salida: 10, 9, 8, 7, 6, 5, 4 ,3 , 2, (Still 2), ready

Más cerca … pero no del todo.

4 Solutions collect form web for “Haga que el temporizador de cuenta regresiva pase de 10sec a 1sec”

Esta es sólo mi investigación en CountDownTimer cuando utilicé CountDownTimer pocos meses antes y su trabajo bien en mi aplicación.

 public void onTick(long millisUntilFinished) 

Este millisUntilFinished dará el tiempo restante en milisegundos, y el último 1000 milisegundos llamará método onFinish (), así que el método onTick se llamará hasta que el tiempo restante sea mayor que (1000 (para OnFinish) + 1000 (para contador)) milisegundos, Si el último milisegundo restante es menor que 2000millisecond saltará el onTick () y llamará directamente onFinish () cuando finalice el temporizador. Para obtener más detalles, consulte el método Handler en esta fuente.

Así que el problema principal es cuando damos unos milisegundos (nuestro caso 10000), pero para iniciar el contador se tarda unos 50 a 150 milisegundos, así que si agregamos que milisegundo en nuestro tiempo total vamos a obtener el contador hasta el final,

Así que puedes probar de esta manera, nada cambia sólo he añadido 150 milisegundos en su tiempo total.

 void startTimer() { cTimer = new CountDownTimer(10150, 1000) { public void onTick(long millisUntilFinished) { c.setText("Please wait " + millisUntilFinished/1000 + " seconds"); thx.setText(millisUntilFinished/1000 + ""); thx.setAlpha(.5f); thx.setClickable(false); } public void onFinish() { c.setText("done"); thx.setText("ready"); thx.setAlpha(1f); thx.setClickable(true); } }; cTimer.start(); } 

Dejarme saber si sus trabajos o no, si usted me pregunta porqué usted no está utilizando Handler, puedo decir CountDownTime internamente usando Handler.

Pruebe este para el contador:

  public void CountDown() { final TextView textic = (TextView) findViewById(R.id.tvConuter); CountDownTimer Count = new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { long str = millisUntilFinished / 1000; String TimeFinished = String.valueOf(str); textic.setText(TimeFinished); } public void onFinish() { textic.setText("STOP"); } }; Count.start(); } 

Esto funcionó perfectamente para mí.

Yo sugeriría usar la clase Timer() o Handler() .

 int tick = 0; Handler handler = new Handler(); Runnable r = new Runnable() {void run(){ if (i < 10) { handler.postDelayed()} else { //finished tick = 0; }}}; 

comenzando:

handler.post(r);

 new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds: " + millisUntilFinished / 1000); //here you can have your logic to set text to edittext } public void onFinish() { mTextField.setText("done!"); } }.start(); 
  • La mejor manera de determinar la aplicación actual (en ejecución) actual (utilizando un servicio?)
  • Medir el tiempo transcurrido entre dos MotionEvents en Android
  • JodaTime - Compruebe si LocalTime es después de ahora y ahora antes de otro LocalTime
  • Android: cambia el formato de hora según el formato de hora actual del dispositivo
  • Android limitar el tiempo de grabación con la intención
  • Java-Android-Tiempo de proceso en la sentencia IF (código de tiempo real)
  • ¿Cómo rastreo la "pantalla en" el tiempo en Android?
  • Tiempo del GPS en Android
  • ¿Cómo obtener un temporizador de alta resolución en código nativo de Android?
  • Detener temporizador sin destruir y volver a crear - Android
  • Tener problemas para conseguir Joda-tiempo para ejecutar en Android.
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.