188 votes

Comment personnaliser une barre de progression sous Android

Je suis en train de travailler sur une application dans laquelle je veux afficher un ProgressBar, mais je veux remplacer la valeur par défaut d'Android ProgressBar.

Alors, comment puis-je personnaliser l' ProgressBar?

Dois-je m'des graphismes et des animations pour qui?

J'ai lu les posts suivants, mais ne pouvait pas les amener à travailler:

Barre de Progression personnalisée d'Android

Comment personnaliser la barre de progression(spinner) dans android

328voto

user2446474 Points 854

J'ai décrit cela avec un code et un exemple dans ce blog: Personnalisé la Barre de Progression De Android

La personnalisation d'un ProgressBar exige la définition de l'attribut ou les propriétés de l'arrière-plan et les progrès de votre barre de progression.

Créer un fichier XML nommé customprogressbar.xml dans votre res->dossier drawable:

customprogressbar.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Define the background properties like color etc -->
    <item android:id="@android:id/background">
    <shape>
        <gradient
                android:startColor="#000001"
                android:centerColor="#0b131e"
                android:centerY="1.0"
                android:endColor="#0d1522"
                android:angle="270"
        />
    </shape>
   </item>

  <!-- Define the progress properties like start color, end color etc -->
  <item android:id="@android:id/progress">
    <clip>
        <shape>
            <gradient
                android:startColor="#007A00"
                android:centerColor="#007A00"
                android:centerY="1.0"
                android:endColor="#06101d"
                android:angle="270"
            />
        </shape>
    </clip>
    </item>
</layer-list> 

Maintenant, vous devez définir l' progressDrawable propriété dans customprogressbar.xml (drawable)

Vous pouvez le faire dans le fichier XML ou dans le cadre de l'Activité au moment de l'exécution).

Effectuez les opérations suivantes dans votre fichier XML:

<ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleHorizontal"
    android:progressDrawable="@drawable/custom_progressbar"         
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Au moment de l'exécution, procédez de la manière suivante

// Get the Drawable custom_progressbar                     
    Drawable draw=res.getDrawable(R.drawable.custom_progressbar);
// set the drawable as progress drawable
    progressBar.setProgressDrawable(draw);

Edit: correction de la mise en page xml

38voto

Gunaseelan Points 2805

dans votre xml

 <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="@style/CustomProgressBar" 
        android:layout_margin="5dip" />
 

Et en res/values/styles.xml :

 <resources> 
        <style name="CustomProgressBar" parent="android:Widget.ProgressBar.Horizontal">
          <item name="android:indeterminateOnly">false</item>
          <item name="android:progressDrawable">@drawable/custom_progress_bar_horizontal</item>
          <item name="android:minHeight">10dip</item>
          <item name="android:maxHeight">20dip</item>
        </style>       
    <style name="AppTheme" parent="android:Theme.Light" />
</resources>
 

Et custom_progress_bar_horizontal est un fichier XML stocké dans un dossier pouvant être dessiné qui définit votre barre de progression personnalisée. Pour plus de détails, voir ce blog .

J'espère que cela t'aidera.

10voto

user4125837 Points 11

La personnalisation de la couleur de la barre de progression, notamment en cas de spinner, nécessite un fichier xml et des codes d’initiation dans leurs fichiers java respectifs.

Créez un fichier XML et nommez-le progressbar.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    tools:context=".Radio_Activity" >

    <LinearLayout
        android:id="@+id/progressbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ProgressBar
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ProgressBar>
    </LinearLayout>

</LinearLayout>
 

Utilisez le code suivant pour obtenir le disque dans la couleur attendue. Ici, nous utilisons le code hexadécimal pour afficher le disque en couleur bleue.

 Progressbar spinner = (ProgressBar) progrees.findViewById(R.id.spinner);
spinner.getIndeterminateDrawable().setColorFilter(Color.parseColor("#80DAEB"),
                android.graphics.PorterDuff.Mode.MULTIPLY);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X