Me he dado cuenta de que ProgressDialog
ahora está en desuso. ¿Cuál sería una alternativa para usar en lugar de eso ProgressBar
? Estoy usando la versión de Android Studio 2.3.3.
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();
Respuestas:
Sí, está en
API level 26
desuso. En cambio, puedes usarprogressBar
.Para crearlo mediante programación:
Primero obtenga una referencia al diseño raíz
o
Luego agrega la barra de progreso
Para mostrar la barra de progreso
Para ocultar la barra de progreso
Para deshabilitar la interacción del usuario solo necesita agregar el siguiente código
Para recuperar la interacción del usuario, solo necesita agregar el siguiente código
Solo para referencia futura, cambie el
android.R.attr.progressBarStyleSmall
aandroid.R.attr.progressBarStyleHorizontal
.El siguiente código solo funciona arriba
API level 21
Para crearlo a través de xml:
En su actividad
Mostrar / ocultar la barra de progreso es lo mismo
Aquí hay una imagen de muestra de cómo se vería:
Para más detalles:
1. Referencia uno
2. Referencia dos
fuente
se puede utilizar
AlertDialog
comoProgressDialog
referencia por debajo de código para elProgressDialog
. A esta función debe llamar siempre que muestre un cuadro de diálogo de progreso.Código:
Salida:
fuente
AlertDialog
no debería usarse aquí.Está en desuso
Android O
por elGoogle
nuevo estándar de interfaz de usuariofuente
Simplemente puede diseñar una interfaz xml para su barra de progreso y pasarla como una vista a AlertDialog, luego mostrar o descartar el diálogo en cualquier momento que lo desee.
progress.xml
El código de código que muestra el cuadro de diálogo de progreso. Simplemente copie este código y péguelo en su fragmento.
Luego, simplemente llame al método cada vez que desee mostrar el diálogo de progreso y pase verdadero como argumento para mostrarlo o falso para descartar el diálogo.
fuente
this
para que se vea asíAlertDialog.Builder builder = new AlertDialog.Builder(this);
. Asegúrate de que estás copiando el código correcto.layout_toEndOf
se puede eliminar ya que no es paraLinearLayout
ProgressBar es muy simple y fácil de usar, tengo la intención de hacer esto igual que el diálogo de progreso simple. el primer paso es que puede hacer un diseño xml del diálogo que desea mostrar, digamos que nombramos este diseño
El siguiente paso es crear AlertDialog que mostrará este diseño con ProgressBar
ahora todo lo que queda es mostrar y ocultar este diálogo en nuestros eventos de clic como este
y eso es todo, debería funcionar, como puede ver, es muy simple y fácil de implementar ProgressBar en lugar de ProgressDialog. ahora puede mostrar / descartar este cuadro de diálogo en Handler o ASyncTask, depende de su necesidad
fuente
progress_dialog.show();
abuilder.show();
. Gracias.show()
/dismiss()
, pero no lo pusebuilder.show()
porque para descartarlo tendríamos que hacerlo, lodialog.dismiss()
cual es un poco confuso para alguien a quien le gusta mantener su código simple y fácil de entender, y también porquebuilder.show()
devuelve elAlertDialog
objeto, y tendremos que guardar esa referencia comoAlertDialog dialog = builder.show();
luegodialog.dismiss()
, es más fácil tener unbuilder.create()
retorno en algúnAlertDialog
objeto, y luego usar ese objeto para mostrar y ocultar el diálogoSí, ProgressDialog está en desuso pero Dialog no.
Puede inflar su propio archivo XML (que contiene una barra de progreso y un texto de carga) en su objeto de diálogo y luego mostrarlo u ocultarlo usando las funciones
show()
ydismiss()
. Aquí hay un ejemplo (Kotlin):Clase ProgressDialog :
XML
En tu código : solo hazlo
var dialog = ProgressDialog.progressDialog(context)
Mostrar:
dialog.show()
Esconder:
dialog.dismiss()
fuente
Bueno, si realmente quiere ir en contra de su voluntad, aún puede usar Sweet Alert Dialog o crear uno por su cuenta.
Código Java:
fuente
HideProgress
no hace nada.ProgressBar es la mejor alternativa para ProgressDialog. Un elemento de interfaz de usuario que indica el progreso de una operación.
Para obtener más información, consulte este documento de Google: https://developer.android.com/reference/android/widget/ProgressBar.html
fuente
No necesita importar ninguna biblioteca personalizada.
Prefiero usar el moderno,
AlertDialog
así que esta es la versión de Kotlin para la gran respuesta publicada por Kishan Donga en esta página.Código de Kotlin:
Uso:
Salida:
fuente
view!!.context
Como se menciona en la página de documentación, la alternativa es
ProgressBar
.ProgressDialog
La apariencia se puede replicar colocandoProgressBar
unAlertDialog
.Todavía puede usarlo, pero Android no quiere que lo use, es por eso que está en desuso. Por lo tanto, debe considerar resolver su problema de otra manera, como incrustar un
ProgressBar
en suLayout
.fuente
se refiere a funciones o elementos que están en proceso de ser reemplazados por otros más nuevos."Deprecated"
Ventaja
Yo personalmente diría que
ProgressBar
tiene la ventaja sobre los dos.ProgressBar
es un elemento de interfaz de usuario que indica el progreso de una operación. Mostrar barras de progreso a un usuario de manera no disruptiva . Muestra la barra de progreso en la interfaz de usuario de tu aplicación.fuente
Uso DelayedProgressDialog de https://github.com/Q115/DelayedProgressDialog Hace lo mismo que ProgressDialog con el beneficio adicional de un retraso si es necesario.
Usarlo es similar a ProgressDialog antes de Android O:
fuente
Configuración de Gradle
Agregue la siguiente dependencia al módulo / build.gradle:
¿Cómo usarlo?
El uso es similar al original ProgressDialog
NB : debe anular la actividad
onBackPressed()
Implementación de Java8:
Implementación de Kotlin:
fuente
Quizás esta guía te pueda ayudar.
Por lo general, prefiero hacer AlertDialogs personalizados con indicadores. Resuelve problemas como la personalización de la vista de la aplicación.
fuente
Puede ayudar a otras personas.
Muchas aplicaciones populares tienen un enfoque diferente para mostrar el progreso de cualquier cosa, como solicitud de red, carga de archivos, etc. Hay un período de incertidumbre que es malo en la perspectiva de UI / UX. Muchas aplicaciones populares (Facebook, Linkedin, etc.) han resuelto este problema al mostrar primero la interfaz de usuario básica. Luego, el contenido cargado se rellena gradualmente en la pantalla.
He usado el brillo para mis aplicaciones para resolver este problema.
Hay un buen artículo sobre esto que será beneficioso para otras personas.
fuente
En el diálogo de progreso, el usuario no puede hacer ningún tipo de trabajo. Todos los procesos en segundo plano se detienen durante el diálogo de progreso. Por lo tanto, es recomendable usar la barra de progreso del usuario en lugar del diálogo de progreso.
fuente
Puede usar SpotDialog utilizando la biblioteca wasabeef, puede encontrar el tutorial completo en el siguiente enlace:
fuente