web-dev-qa-db-fra.com

Comment afficher une barre de progression horizontale Android Indéterminée

Comment afficher une barre de progression horizontale indéterminée dans Android? L'animation de la barre de progression doit commencer de 0 à 100, puis revenir de 100 à 0 en continu. Je ne cherche pas la barre de progression de la roue.

42
Vinoth

Je savais déjà que setIndeterminate donnera une barre de progression horizontale infinie. Mais elle sera similaire à la roue de chargement, sauf qu'elle sera horizontale. Si vous voyez ma question, je cherchais une barre horizontale qui part de 0 et va jusqu'à 100 (une augmentation progressive). Si vous souhaitez y parvenir dans Android, vous devez utiliser votre barre de progression comme ci-dessous:

 <ProgressBar
    Android:id="@+id/progress_horizontal"
    Android:indeterminateOnly="false"
    Android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal"
    Android:progressDrawable="@drawable/progress_horizontal"
    Android:minHeight="24dip"
    Android:maxHeight="24dip" 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"/>

Comme je voulais changer l'arrière-plan de ma barre de progression, j'ai changé ProgressDrawable et IndeterminateDrawable. Les tirables d'origine se trouvent sous frameworks/base/core/res/res/drawable. Copiez-les dans votre projet et changez la couleur selon vos besoins.

Créez un fil qui met à jour le nombre de progrès et fait un Thread.Sleep. Ensuite, il envoie le message au gestionnaire qui mettra à jour la barre de progression dans le thread d'interface utilisateur.

43
Vinoth

Utilisez la méthode setIndeterminate de ProgressBar:

Android.widget.ProgressBar bar = new Android.widget.ProgressBar(context);
bar.setIndeterminate(true);

Mais oui, vous auriez pu trouver cela assez rapidement dans la documentation du développeur.

http://developer.Android.com/reference/Android/widget/ProgressBar.html#setIndeterminate%28boolean%29

12
MichaelM

Pour développer Vinoth Answer, voici un code prêt:

<ProgressBar
        Android:id="@+id/progressBarLoadingRecite"
        Android:indeterminateDrawable="@Android:drawable/progress_indeterminate_horizontal"
        Android:minHeight="24dip"
        Android:layout_marginTop="20dip"
        Android:indeterminate="true"
        Android:maxHeight="24dip"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"/>
9
user586399

Peut-être un peu tard, mais vous pouvez faire quelque chose comme ça:

<ProgressBar
    Android:id="@+id/progress"
    Android:layout_width="match_parent"
    Android:layout_height="10dp"
    Android:indeterminate="true"
    style="?android:attr/progressBarStyleHorizontal" />

J'espère que cela aide quelqu'un!

4

Dans le xml définissant votre barre de progression, vous pouvez ajouter

style="@Android:style/Widget.ProgressBar.Horizontal"
3
Steve Waring