2011-03-10 18 views
19

Quiero mostrar un círculo de progreso en mi aplicación mientras cargué datos. Tengo una actividad y me muevo de una actividad a otra. Estoy analizando algunos datos xml, así que, por el momento, hasta que se complete el análisis, quiero mostrar un efecto de carga circular.Quiero un círculo de progreso en lugar de diálogo de progreso

+2

Esto es cómo lo hice http://stackoverflow.com/questions/19655715/progress-dialog-is-closed-when-touch-on-screen/ 22939109 # 22939109 – Ali

Respuesta

3

Por qué no utilizar la interfaz de usuario progressbar

myProgressDialog = ProgressDialog.show(ListingPage.this,"Please Wait", "Loading Date", true); 

dan

+0

No puedo usar este progressDialog porque mi cliente no quiere esto, quiere el efecto de carga circular. – ta54

+0

*** ProgressDialog ahora está en desuso. – Digitalsa1nt

17

Es necesario crear el archivo XML animación en la resolución de la carpeta/animal y llamar a startAnimation en su ImageView cuando se cargan datos y stopAnimation cuando dejas de cargar datos. Y establecer la carga de imágenes a ImageView, por ejemplo:

loading http://bigod26.com/pics/loading.png

Este código de identificación para el archivo xml animación círculo

<?xml version="1.0" encoding="UTF-8"?> 
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="infinite" 
    android:duration="1200" 
    android:interpolator="@android:anim/linear_interpolator" /> 
+0

Estoy usando una vista de lista con un adaptador personalizado. y quiero mostrar el efecto de carga en esa vista de lista. cómo puedo obtener ese análisis y podemos detener esta animación – ta54

+0

Estoy usando la vista de lista también. Y cuando otro hilo analiza el xml, configuro la vista perdida especial loadingAdapter, que devuelve una sola vista. Esta vista es imageView que llena todos los padres y ajusta la imagen al centro. Al analizar el análisis de parada de hilo, configuro para ver mi otro adaptador personalizado que proporciona elementos de IU. – RomaTTi

+0

¿Puede darme un ejemplo? Úselo. ¡Gracias! –

1

Tal como lo haría el diálogo de progreso, utilizar una animación en cambio, con la tarea asíncrona y solo hazlo visible en preejecución y escóndelo nuevamente en la publicación.

2

Uso AsyncTask para la carga y el análisis sintáctico:

/** 
    * Background task that fetched the content from server and parses the content. 
    */ 
    private class BackgroundLoadingTask extends AsyncTask<InputStream, Void, Boolean> { 

    @Override 
    protected void onPreExecute() { 
     // show the progress bar 
     Activity.this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_ON); 
    } 

    @Override 
    protected Boolean doInBackground(InputStream... params) { 

     // try to load XML from HTTP server and parse 

     return true; 
    } 


    @Override 
    protected void onPostExecute(Boolean parsingError) { 
     // hide the progress bar 
     Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_OFF); 


    } 
    } 
+1

tenga en cuenta que no todas estas funciones funcionarán si ha salido a pantalla completa u ocultado la barra de título. – trgraglia

+0

'android.util.AndroidRuntimeException: requestFeature() debe llamarse antes de agregar contenido' – dentex

28

puede utilizar un ProgressBar indeterminada para el efecto de carga circular. Aquí está cómo lo hace en XML:

<ProgressBar android:indeterminate="true" 
      android:layout_width="50dp" android:layout_height="50dp" 
      android:id="@+id/marker_progress" style="?android:attr/progressBarStyle" 
      android:layout_gravity="center_vertical|center_horizontal"/> 

Puede cambiar el alto y el ancho para que sea lo que desea. Cuando termine de cargar, puede cambiar su visibilidad a View.INVISIBLE o View.GONE

1

Para expandir un poco la respuesta de trgraglia, puede crear una barra de progreso indeterminada (comportamiento: ciclo) y establecer la visibilidad en falso. Durante AsyncTask preExecute(), hágalo visible, y durante AsyncTask onPostExecute(), vuélvalo a invisible (siempre que se mantenga en la misma actividad o con el caso w/e que pueda necesitar). Esto elimina la necesidad de crear una animación.

4

Insertar este beetween dos Ver etiquetas

<ProgressBar android:id="@+id/loading_spinner" 
     style="?android:progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" /> 
Cuestiones relacionadas