Actualmente estoy usando en mi aplicación una vista de lista que necesita quizás un segundo para mostrarse.
Lo que actualmente hago es usar la propiedad @ id / android: empty de la vista de lista para crear un texto de "carga".
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="Loading..."/>
Ahora, me gustaría reemplazar eso con el círculo animado que se usa en un diálogo de carga en lugar de este texto, supongo que todos saben a qué me refiero:
Editar: no quiero un diálogo. Quiero mostrar eso dentro de mi diseño.
Muchas gracias por tu ayuda!
android
loading
android-asynctask
geometry
Waza_Be
fuente
fuente
Puede hacer esto usando el siguiente xml
Con este estilo
Para usar esto, debe ocultar sus elementos de la IU configurando el valor de visibilidad en GONE y cada vez que se carguen los datos, invoque
setVisibility(View.VISIBLE)
todas sus vistas para restaurarlos. No olvides llamarfindViewById(R.id.loadingPanel).setVisiblity(View.GONE)
para ocultar la animación de carga.Si no tiene un evento / función de carga, pero solo quiere que el panel de carga desaparezca después de x segundos, use una Manija para activar la ocultación / visualización.
fuente
findViewById(...).setVisibility(View.GONE)
línea cuando giro la pantalla. Funciona como un encanto en una orientación, pero ¿alguna idea de por qué esto podría estar rompiendo?findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
en la segunda actividad? No puede encontrar elview
dado que no hay ningúnsetContnetView()
método en la actividad del segundo fragmento. ¡Gracias!Esto generalmente se conoce como una barra de progreso indeterminado o diálogo de progreso indeterminado.
Combina esto con un hilo y un controlador para obtener exactamente lo que quieres. Hay una serie de ejemplos sobre cómo hacer esto a través de Google o aquí mismo en SO. Recomiendo encarecidamente pasar el tiempo para aprender a usar esta combinación de clases para realizar una tarea como esta. Es increíblemente útil en muchos tipos de aplicaciones y le dará una gran idea de cómo los subprocesos y los controladores pueden trabajar juntos.
Comenzaré a explicar cómo funciona esto:
El evento de carga inicia el diálogo:
Ahora el hilo hace el trabajo:
Finalmente recupere el estado del hilo cuando esté completo:
fuente
Si desea no inflar otra vista solo para indicar el progreso, haga lo siguiente:
Android se encargará de la visibilidad de la barra de progreso.
Por ejemplo, en
activity_main.xml
:Y en
MainActivity.java
:}
fuente
Puede usar este código de las muestras de Firebase Github .
No necesita editar en los archivos de diseño ... solo cree una nueva clase "BaseActivity"
En su actividad que desea utilizar el diálogo de progreso ...
Antes / después de la función que lleva tiempo
fuente
Para los que se desarrollan en Kotlin, existe un método dulce proporcionado por la biblioteca Anko que hace que el proceso de mostrar un
ProgressDialog
muy fácil.Basado en ese enlace:
Esto mostrará un cuadro de diálogo de progreso con el% de progreso que se muestra (para el cual debe pasar el
init
parámetro para calcular el progreso).También existe el
indeterminateProgressDialog()
método, que proporciona la animación del Círculo giratorio indefinidamente hasta que se descarta:Un saludo a este blog que me llevó a esta solución.
fuente