web-dev-qa-db-fra.com

Comment arrêter et démarrer une barre de progression

Je ne parviens pas à arrêter un ProgressBar. Son style est ProgressBarStylesmall. Comment puis-je démarrer et arrêter un petit ProgressBar circulaire?

26
saqibabbasi

Par défaut, vous pouvez rendre progressBar visible et le masquer lorsqu'il n'est pas utilisé comme ceci:

progressBar.setVisibility(View.GONE);

Si vous voulez le contrôler par programme, vous pouvez y parvenir avec:

progressBar.setVisibility(View.VISIBLE); //to show
progressBar.setVisibility(View.GONE); // to hide

Vous pouvez même aller avec ProgressDialog:

private ProgressDialog progressDialog;
...

public void showProgressDialog() {
    if (progressDialog == null) {
        progressDialog = new ProgressDialog(PhotographerDetailActivity.this);
        progressDialog.setIndeterminate(true);
        progressDialog.setCancelable(false);
    }
    progressDialog.setMessage("your message");
    progressDialog.show();
}

public void dismissProgressDialog() {
    if (progressDialog != null ) {
        progressDialog.dismiss();
    }

J'espère que cela vous aidera.

13
Riten

Vous aurez besoin de gérer AsyncTasks pour cela.

/*
 * We set the visibility to true. If it was already visible 
 * there's no need of doing this but we do it for the sake of readability.
 */
final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1);
progressBar.setVisibility(View.VISIBLE);
new AsyncTask<Void,Void,Void>(){

//The variables you need to set go here

    @Override
    protected Void doInBackground(final Void... params){
         // Do your loading here. Don't touch any views from here, and then return null
         return null;
    }


    @Override
    protected void onPostExecute(final Void result){
         // Update your views here
         progressBar.setVisibility(View.GONE);
    }
}.execute()
6
Charlie-Blake

Je ne sais pas si cela aide, mais vous pouvez utiliser un ProgressDialog. Supposons que vous avez une ProgressDialog nommée progressDialog que vous pouvez utiliser progressDialog.dismiss();. Assurez-vous simplement que l'instance de la ProgressDialog que vous ignorez est la ProgressDialog qui est réellement affichée. Vous pouvez le vérifier avec progressDialog.isShowing();. Pour démarrer une ProgressDialog:

progressDialog = ProgressDialog
                    .show(myActivityContext,
                            "ProgressDialog Title",
                                "ProgressDialog Body");

Par défaut, l’interface utilisateur ProgressDialog est circulaire exactement comme vous en avez besoin.

4
Angelo

masquer la barre de progression: progressBar.setVisibility(View.INVISIBLE);

affiche la barre de progression: progressBar.setVisibility(View.VISIBLE);

lire sur GONE VS. INVISIBLE ici

3
Hojat Modaresi

Nous sommes tombés sur ce sujet plus ancien et avons remarqué comment tout le monde parle de ProgressDialog. Il convient de noter que ProgressDialog est obsolète et que la classe ProgressBar doit être utilisée à la place.

À partir de la documentation Android:

Éviter ProgressDialog

Android inclut une autre classe de dialogue appelée ProgressDialog qui affiche une boîte de dialogue avec une barre de progression. Ce widget est obsolète car il empêche les utilisateurs d'interagir avec l'application pendant la progression. Si vous devez indiquer un chargement ou une progression indéterminée, vous devez suivre les directives de conception pour Progress & Activity et utiliser un ProgressBar dans votre présentation au lieu d’utiliser ProgressDialog.

2
MvanDoorn

Il y a une barre de progression "indéterminée", qui tourne et "déterminée", mais pas. S'en tenir à ce dernier et tout ira bien. Pour le "déterminer", ajoutez l'attribut progress à son élément xml, définissez 

 style="?android:attr/progressBarStyleHorizontal"
        Android:indeterminate="false"

Android Circular Déterminate ProgressBar

0
RexSplode