Exemple de barre de progression Android

Dans Android, la barre de progression est utile pour indiquer à l’utilisateur que la tâche prend plus de temps pour se terminer.

Dans ce didacticiel, nous vous montrons comment afficher une boîte de dialogue de barre de progression pour indiquer à l’utilisateur que votre tâche est en cours d’exécution, ainsi que pour augmenter le statut de la barre de progression jusqu’à la fin de la tâche.

P.S Ce projet est développé sous Eclipse 3.7 et testé sous Android 2.3.3.

1. Ajouter un bouton

Ouvrez le fichier “ res/layout/main.xml ”, ajoutez simplement un bouton normal pour la démonstration.

File: res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout__width="fill__parent"
    android:layout__height="fill__parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStartProgress"
        android:layout__width="wrap__content"
        android:layout__height="wrap__content"
        android:text="Download File"/>

</LinearLayout>

2. Code Code

La clé d’utilisation de la barre de progression utilise «` Thread` »pour exécuter votre tâche de consommation de temps et un autre« Thread » pour mettre à jour le statut de la barre de progression en conséquence. Lisez le commentaire du code, il devrait être explicite.

Fichier: MyAndroidAppActivity.java

package com.mkyong.android;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

    Button btnStartProgress;
    ProgressDialog progressBar;
    private int progressBarStatus = 0;
    private Handler progressBarHandler = new Handler();

    private long fileSize = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        addListenerOnButton();

    }

    public void addListenerOnButton() {

        btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
        btnStartProgress.setOnClickListener(
                 new OnClickListener() {

           @Override
           public void onClick(View v) {

           //prepare for a progress bar dialog
            progressBar = new ProgressDialog(v.getContext());
            progressBar.setCancelable(true);
            progressBar.setMessage("File downloading ...");
            progressBar.setProgressStyle(ProgressDialog.STYLE__HORIZONTAL);
            progressBar.setProgress(0);
            progressBar.setMax(100);
            progressBar.show();

           //reset progress bar status
            progressBarStatus = 0;

           //reset filesize
            fileSize = 0;

            new Thread(new Runnable() {
              public void run() {
                while (progressBarStatus < 100) {

                 //process some tasks
                  progressBarStatus = doSomeTasks();

                 //your computer is too fast, sleep 1 second
                  try {
                    Thread.sleep(1000);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }

                 //Update the progress bar
                  progressBarHandler.post(new Runnable() {
                    public void run() {
                      progressBar.setProgress(progressBarStatus);
                    }
                  });
                }

               //ok, file is downloaded,
                if (progressBarStatus >= 100) {

                   //sleep 2 seconds, so that you can see the 100%
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                   //close the progress bar dialog
                    progressBar.dismiss();
                }
              }
               }).start();

               }

                });

        }

   //file download simulator... a really simple
    public int doSomeTasks() {

        while (fileSize <= 1000000) {

            fileSize++;

            if (fileSize == 100000) {
                return 10;
            } else if (fileSize == 200000) {
                return 20;
            } else if (fileSize == 300000) {
                return 30;
            }
           //...add your own

        }

        return 100;

    }

}

__P.S La méthode "doSomeTasks" est juste un simulateur de téléchargement de taille de fichier, il suffit de remplacer cette méthode par votre tâche longue en cours d’exécution.

3. Démo

Lancer l’application.

{vide} 1. Résultat, un seul bouton.

barre de progression Android demo1

{vide} 2. Cliquez sur le bouton, une "boîte de dialogue de progression" s’affiche pour indiquer la progression du téléchargement en cours.

barre de progression Android demo2

{vide} 3. La tâche est terminée, la barre de progression indique 100% et se ferme automatiquement.

barre de progression Android demo3

Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2011/12/Android-ProgressBar-Example.zip[Android-ProgressBar-Example.zip](15 Ko)

Références

Exemple d’Android ProgressBar]

lien://tag/android/[android]lien://tag/progress-bar/[barre de progression]