|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Crear cuenta regresiva
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. Código:
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);
}
}
|
|
|
|
#2
|
||||
|
||||
|
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!!! |
|
#3
|
||||
|
||||
|
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. Última edición por Arasthel Día 28/08/12 a las 13:06:41. |
![]() |
Estás aquí
|
||||||
|
||||||