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.
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