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.
{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.
{vide} 3. La tâche est terminée, la barre de progression indique 100% et se ferme automatiquement.
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
ProgressBar Exemple]. http://developer.android.com/reference/android/app/ProgressDialog.html [Android
ProgressDialog JavaDoc]. http://huuah.com/android-progress-bar-and-thread-updating/ [Another
Exemple d’Android ProgressBar]
lien://tag/android/[android]lien://tag/progress-bar/[barre de progression]