Dialogue de progression d'un traitement

 

Il s'agit ici de d'afficher qu'un traitement long et de durée déterminée est lancé.

 

Construire simplement la dialogue de progression

Pour créer une dialogue de progression, il faut utiliser la classe ProgressBar

ProgressBar progressBar;

Puis préciser la valeur maximum de votre Progress Bar:

progressBar.setMax(valeur);

Pour indiquer le style d'affichage de la dialogue:
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); ou vertical...

On pourra aussi utiliser le style ”@android:style/Widget.ProgressBar.Horizontal”, il y en a d'autres:

  • Widget.ProgressBar.Small
  • Widget.ProgressBar.Large
  • Widget.ProgressBar.Inverse
  • Widget.ProgressBar.Small.Inverse
  • Widget.ProgressBar.Large.Inverse

 

Pour faire avancer la barre de progression, il suffit d'indiquer la valeur à laquelle la barre doit se positionner via

progressBar.setProgress(valeur);

 

Pour cacher, montrer la ProgressBar:

progressBar.setVisibility(View.valeur);

Ou valeur sera VISIBLE, INVISIBLE ou GONE

 

Et c'est en fait le plus difficile...

L'UI Thread ne doit en aucun cas effectuer de traitements longs (Sinon: risque d'ANR:Application Not Responding) ! Il devra par contre gérer l'affichage de la dialogue d'attente ou de progression (c'est le seul thread qui peut le faire - d'où son nom UI Thread !). Donc l'utilisation de Threads est obligatoire pour les traitements longs et la communication en thread et thread UI devra être mise en place pour permettre une maj de l'UI ! (cf. chapitre sur les Threads pour plus d'informations).

 

 

Exemple

Un exemple est fourni dans le chapitre des handlers...et cela tombe bien, le handler et les threads sont à utiliser.

 

Image non trouvée !Vous pouvez poser directement votre ProgressBar sur votre activity via l'outil gaphique. Dans ce cas, utilisez findViewById pour trouver votre Dialogue de progression. Par exemple, si votre ProgressBar à pour ID progressbar:

progressBar = (ProgressBar) findViewById(R.id.progressbar);

 

Annexes

LevelListDrawable pour dessiner votre propre barre de progression