¿La mejor manera de mostrar un indicador de carga / avance?

¿Cuál es la mejor manera de mostrar un spinner de carga mientras la aplicación está esperando una respuesta del servidor?

¿Puede hacerse esto mediante programación? ¿Para que no tenga que agregar el spinner de carga en el archivo xml?

ProgressDialog progress = new ProgressDialog(this); progress.setTitle("Loading"); progress.setMessage("Wait while loading..."); progress.setCancelable(false); // disable dismiss by tapping outside of the dialog progress.show(); // To dismiss the dialog progress.dismiss(); 

O

 ProgressDialog.show(this, "Loading", "Wait while loading..."); 

Leer más aquí.

Por cierto, Spinner tiene un significado diferente en Android. (Es como el menú desplegable de selección en HTML)

Utilice ProgressDialog

 ProgressDialog.show(Context context, CharSequence title, CharSequence message); 

Introduzca aquí la descripción de la imagen

Sin embargo, esto se considera como un patrón anti hoy (2013): http://www.youtube.com/watch?v=pEGWcMTxs3I

En realidad, si usted está esperando la respuesta de un servidor que debe hacerse mediante programación. Puede crear un diálogo de progreso y despedirlo, pero de nuevo eso no es "la forma android".

Actualmente el método recomendado es utilizar un DialogFragment :

 public class MySpinnerDialog extends DialogFragment { public MySpinnerDialog() { // use empty constructors. If something is needed use onCreate's } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { _dialog = new ProgressDialog(getActivity()); this.setStyle(STYLE_NO_TITLE, getTheme()); // You can use styles or inflate a view _dialog.setMessage("Spinning.."); // set your messages if not inflated from XML _dialog.setCancelable(false); return _dialog; } } 

A continuación, en su actividad, configure su gestor de fragmentos y muestre el cuadro de diálogo una vez que haya esperado el inicio del servidor:

 FragmentManager fm = getSupportFragmentManager(); MySpinnerDialog myInstance = new MySpinnerDialog(); } myInstance.show(fm, "some_tag"); 

Una vez que su servidor haya respondido completo, lo rechazará:

 myInstance.dismiss() 

Recuerde que el progressdialog es un spinner o una barra de progreso dependiendo de los atributos, lea más en la guía de api

Así es como lo hice para que sólo se pueda abrir un diálogo de progreso a la vez. Basado en la respuesta de Suraj Bajaj

 private ProgressDialog progress; public void showLoadingDialog() { if (progress == null) { progress = new ProgressDialog(this); progress.setTitle(getString(R.string.loading_title)); progress.setMessage(getString(R.string.loading_message)); } progress.show(); } public void dismissLoadingDialog() { if (progress != null && progress.isShowing()) { progress.dismiss(); } } 

También tuve que usar

 protected void onResume() { dismissLoadingDialog(); super.onResume(); } 
  • Personalización del espaciado de los hiladores
  • ¿Cómo configurar el elemento activo en la barra desplegable Barra de acciones?
  • Error en Spinner en una ventana emergente, se bloquea cuando se hace clic
  • spinner con selección vacía
  • Barra de acciones setnavigationmode deprecated
  • Uso correcto de un Spinner, siguiendo las directrices de diseño del material
  • ¿Cómo puedo cambiar el tamaño o el color de mi casilla de verificación de spinner?
  • Posicionar dinámicamente la flecha de la esquina derecha del ActionBar Spinner en función de la longitud del título mostrado
  • Android Spinner: centralizar el texto verticalmente dentro de la hiladora
  • Cómo rellenar Spinner con valor int
  • Spinner onItemSelected no se llama usando Marsmallow
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.