Ver la Versión Completa : Montrar contador mientras se esta incrementando
Marciano Verde
29/08/13, 16:21:07
Hola.
Quería hacer un simple contador que vaya del 0 al 100000.
El código es este:
for (int indice=0; indice<100001; indice++) {
cont.setText( String.valueOf(indice));
}
la variable "cont" hace referencia a un TextView
Pues bien, el problema es que me aparece de golpe el número 100000, sin pasar por los anteriores, yo lo quiero es ver los números corriendo.
Supongo que dentro del bucle habrá que hacer algún tipo de refresco, ya lo he intentado con "cont.onPreDraw()" y con "cont.refreshDrawableState();" pero nada...
Bongiovi
29/08/13, 16:35:19
Creo que el problema es que el conteo es tan rapido que no se ve. Pon un sleep dentro del for de medio segundo por ejemplo.
kriogeN
29/08/13, 16:44:49
Pregunta muy parecida a otra que hicieron ayer, pero sobre imágenes en lugar de sobre texto.
Si ese bucle lo ejecutas en el hilo principal NUNCA se ejecutará el onDraw hasta que la función donde está el for termine. Por lo tanto cuando va a pintar te pinta directamente el 10.000, porque es la única vez que se va a ejecutar.
¿Formas de solucionarlo? Obviamente todas usando un hilo paralelo para contar que actualice el texto en el hilo principal. La mejor de todas usando un AsyncTask con publishProgress.
Bongiovi
29/08/13, 17:53:15
Pregunta muy parecida a otra que hicieron ayer, pero sobre imágenes en lugar de sobre texto.
Si ese bucle lo ejecutas en el hilo principal NUNCA se ejecutará el onDraw hasta que la función donde está el for termine. Por lo tanto cuando va a pintar te pinta directamente el 10.000, porque es la única vez que se va a ejecutar.
¿Formas de solucionarlo? Obviamente todas usando un hilo paralelo para contar que actualice el texto en el hilo principal. La mejor de todas usando un AsyncTask con publishProgress.
Pero el setText si que se ejecuta en cada iteración, no?
kriogeN
29/08/13, 18:11:17
Pero el setText si que se ejecuta en cada iteración, no?
Si, pero hasta que no se ejecuta el onDraw no cambia en la pantalla.
jtsamper
29/08/13, 23:05:47
Usa un handler para eso asi te ira mostrando uno a uno los numero xD
De la otra forma, añadiendo Thread.sleep , se consigue que se pare el hilo principal y hasta que no acabe la app quedara bloqueada
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.