Android Progress Bar

[Fuente: http://developer.android.com/reference/android/widget/ProgressBar.html]

java.lang.Object
android.view.View
android.widget.ProgressBar
Known Direct Subclasses

Known Indirect Subclasses

Introducción

Esta clase muestra un indicador visual de progreso de alguna operación pesada en tiempo. Muestra una barra al usuario representando cuanto lleva la realización de la operación: la aplicación puede cambiar la cantidad de progreso (modificando la longitud de la barra) según el avance de la acción. Hay también un elemento visual que se puede mostrar en la barra de progreso que es útil para mostrar un progreso indeterminada, como por ejemplo el nivel de buffer cuando se esta reproduciendo un streaming.

La barra de progreso puede ser también indeterminada. En modo intdeterminado, la barra de progreso muestra una animación cíclica sin indicación de progreso. Este modo se utiliza en las aplicaciones donde no se sabe la duración de la tarea. La barra de progreso indeterminada puede ser una spinning wheel o una barra horizontal.

El siguiente código de ejemplo muestra como se puede utilizar una barra de progreso para actualizar el interfaz de usuario  y para notificar al usuario del progreso:

 public class MyActivity extends Activity {

     private static final int PROGRESS = 0x1;

     private ProgressBar mProgress;
     private int mProgressStatus = 0;

     private Handler mHandler = new Handler();

     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.progressbar_activity);

         mProgress = (ProgressBar) findViewById(R.id.progress_bar);

         // Start lengthy operation in a background thread
         new Thread(new Runnable() {
             public void run() {
                 while (mProgressStatus < 100) {
                     mProgressStatus = doWork();

                     // Update the progress bar
                     mHandler.post(new Runnable() {
                         public void run() {
                             mProgress.setProgress(mProgressStatus);
                         }
                     });
                 }
             }
         }).start();
     }
 }

Para añadir una barra de progreso a un fichero de layout, utilizamos el elemento  <ProgressBar> . Por defecto , la barra de progreso es una spinning wheel (un indicador indeterminado). Para cambiar a una barra horizontal, aplica el estilo Widget.ProgressBar.Horizontal como en el siguiente ejemplo:

 <ProgressBar
     style="@android:style/Widget.ProgressBar.Horizontal"
     ... />

Si utilizas la barra de progreso para mostrar un progreso medido, entonces es mejor utilizar la barra horizontal. Puedes incrementar el progreso conincrementProgressBy() o con setProgress().Por defecto, la barra de progreso esta completa cuando llega a 100. Si necesario, puedes ajustar el valor máximo (el valor de cuando esta completa) utilizando el atributo android:max .

Otro estilo común para aplicar a la barra de progreso es  Widget.ProgressBar.Small, que muestra una versión pequeña de la spinning wheel – util cuando se está esperando que cargue cierto contenido. Por ejemplo, puedes insertar esta clase de barra de progreso en el layout por defecto para una vista que será poblado por cierto contenido cuando sea recuperado de internet – la spinning wheel aparece inmediatamente y cuando tu aplicación recibe el contenido, reemplaza la progress bar por el contendio descargado. Por ejemplo:

 <LinearLayout
     android:orientation="horizontal"
     ... >
     <ProgressBar
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         style="@android:style/Widget.ProgressBar.Small"
         android:layout_marginRight="5dp" />
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/loading" />
 </LinearLayout>

Other progress bar styles provided by the system include: