PDA

Ver la Versión Completa : [ CONSULTA ] Crear cuenta regresiva


goltara
26/08/12, 13:55:49
Buenos dias,

Me gustaría preguntaros la mejor forma de crear una cuenta regresiva, en mi caso, solo conozco una forma de hacerlo, y es con la clase CountCountDownTimer.

Introduzco un timer con un total de 90000 milisegundos, lo que equivale a 1 minuto y medio, y un preescalado de 1000 milisegundos, cuando pasan cada preescalado se activa el metodo onTick() y es aqui donde me las he apañado para crear una cuenta regresiva.

El problema que me surge es el siguiente, mi app consiste en un juego que al adivinar varias veces la respuesta correcta se van activando comodines, cuando se acumulan 5 comodines, lo que pretendo es añadir 15 segundos a este timer, y es aqui donde no se como se hace esto.

Otro Problema es que al finalizar el Timer me gustaría que se abriese un Dialog, pero no se por que no puedo hacerlo.

Hay alguna otra forma de hacer una cuenta regresiva???

Os dejo el codigo implementado.

class Tiempo extends CountDownTimer{

int segundos=30;
int minutos=1;






/*
* la variable millisInfuture Idica el tiempo en milis de la cuenta regresiva, la variable
* countDownInterval indica como quiere que contemos el tiempo, de 1 en 1 o de x en x
*/
public Tiempo(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);

}

@Override
public void onFinish() {

Dialog d= new Dialog(this);
d.setTitle("Registro De Tiradas");
TextView text = new TextView(this);

String text="prueba";

scroll=new ScrollView(this);
scroll.addView(prueba);
d.setContentView(scroll);
d.show();




}
@Override
public void onTick(long millisUntilFinished) {
// Accion que realizamos en cada preescalado
String seg="";
String min="";

segundos--;


if(segundos<0){
segundos=59;
minutos--;
min="00";
}

if(minutos==0){
min="00";
}
if(minutos==1){
min="01";
}

if(segundos>=0 && segundos <=9){
seg="0"+segundos;
}else{
seg=segundos+"";
}


var.ttime_cj.setText(min + ":" + seg);
}

}

goltara
27/08/12, 14:29:36
Ya he conseguido aumentar el tiempo, lo que hago es que cuando suceda el evento de los comodines se cancele el timer y se cree otra vez pero con un tiempo igual al tiempo que quedaba en el primer timer + 30 segundos, funciona.

Lo que no he conseguido es crear el dialogo al terminar la cuenta, si hay alguien que sepa porque no funciona por favor que me lo diga.

Gracias!!!

Arasthel
27/08/12, 14:37:13
El countdowntimer creo recordar que tenía un método para cuando la cuenta atrás acababa, onFinish() creo que era.

EDIT: vale, acabo de ver que efectivamente lo tienes en el método onFinish(), si es que cuando uno no está fino, no está fino. No sé si servirá de algo, pero prueba a crear un Handler y poner todo lo del dialog en un Runnable con handler.postRunnable(), quizás así sí que funcione.

Un saludo.