ProgressBar
Explicación del concepto de ProgressBar
Last updated
Explicación del concepto de ProgressBar
Last updated
Hereda de View
.
Es una interfaz de usuario que indica el progreso de una operación. Una ProgressBar soporta dos modos:
Utilice el modo indeterminado cuando no sabe cuanto va a durar la operación que se está realizando.
Es el modo por defecto y muestra una animación cíclica sin indicar una cantidad concreta de progreso.
Utilice el modo determinado cuando quiere mostrar la cantidad específica de progreso que está ocurriendo.
Exiten varios tipos de ProgressBar
en función de los estilos que se le asignen a la View
. Estos estilos vienen preinstalados en Android y se pueden diferenciar en:
Circulares
Horizontales
Holo -> Un diseño de Android más clásico. Dio paso a Material Design.
Material -> El estilo que se aplica a la libreria Material Design
de Android. Es el estilo por defecto.
DeviceDefault -> La que esté seleccionada en el Dispositivo. Esto incluye los temas que puedan encontrarse instalados en un equipo.
Es por eso que podemos encontrar las siguientes (y más) opciones en un XML:
Define el tiempo en milisegundos que pasa entre cada frame de la animación. Puede ser un Integer
.
Define si la ProgressBar
va a tener progreso determinado (false
) o indeterminado (true
).
Define el comportamiento de la animación cuando el progreso en indeterminado. Puede ser:
cycle -> Va hasta el valor definido y luego del valor definido a 0.
repeat -> La animación vuelve a empezar cada vez que llega al valor definido.
Define el drawable a utilizar en la animación de indeterminado. Un drawable animable (animatable) da más control al desarrollador sobre la animación.
Define la duración de la animación de progreso indeterminado.
Solo afecta a la animación si el drawable no es "animatable". Es un Integer
.
Restringe la ProgressBar
a modo indeterminado exclusivamente. Es un Booleano
.
Define el color que se aplica al indicador de progreso indeterminado.
Es el modo en el que se aplica el color. En el siguiente enlace podrá encontrar las opciones.
Define la aceleración de la curva para la animación del modo indeterminado si el drawable no es "animatable".
Define el valor máximo de Progreso.
Atributo opcional para dotar de una altura máxima a esta View
.
Atributo opcional para dotar de una anchura máxima a esta View
.
Define el valor mínimo de Progreso.
Atributo opcional para dotar de una altura mínima a esta View
.
Atributo opcional para dotar de una anchura mínima a esta View
.
Define el progreso por defecto. Puede ser un Integer entre min y max.
Define el color que se aplica al fondo del indicador de progreso.
Es el modo en el que se aplica el color. En el siguiente enlace podrá encontrar las opciones.
Define el drawable a utilizar en la animación de determinado. Un drawable animable (animatable) da más control al desarrollador sobre la animación.
Define el color que se aplica al indicador de progreso determinado.
Es el modo en el que se aplica el color. En el siguiente enlace podrá encontrar las opciones.
Define un progreso secundario. Debe estar contenido entre 0 y max.
Este progreso se dibuja entre el progreso principal y el fondo. Es muy útil para ver cuanto del recurso se ha guardado ya en el buffer.
Define el color que se aplica al indicador de progreso secundario.
Es el modo en el que se aplica el color. En el siguiente enlace podrá encontrar las opciones.
Es recomendable incluir los ProgressBar con progreso determinado en e XML dando un progreso avanzado, de esta manera se puede ver el diseño sin tener que esperar a programar el código.
Una vez hecho esto, en código se pone a cero.
Para crearlo debemos darle un diseño, un estilo, un id y comprobar que todo ello está a nuestro gusto. Esto se hace en el layout.
Ahora que ya tenemos nuestro ProgressBar listo, debemos configurarlo en código para que se inicie desde el principio:
Hasta ahora, hemos configurado todas nuestras Views desde el onCreate()
. Sin embargo, sabemos que después de onCreate()
viene onStart()
y, por tanto, si configuramos el movimiento de la ProgressBar
en onCreate()
, no lo vamos a poder ver.
Para solucionar este problema vamos a introducir un concepto nuevo:
Las corutinas nos permiten gestionar procesos de una manera asíncrona y hacer que nuestra App se mueva más rápido.
No se va a explicar aquí su funcionamiento, solo el código para utilizarlas en este caso concreto:
La función progressManager(ProgressBar) debe contener el código que gestiona el avance del progreso, por ejemplo, la cantidad de datos descargados.
En el ejemplo se hace por tiempo para que vean que en este punto del código, se puede incluir código arbitrario.