En lisant la documentation limitée fournie par Google, j'ai le sentiment qu'il est possible de changer l'apparence (dessinable) d'un ProgressBar / ProgressDialog en créant simplement un nouveau style et en l'attribuant à la propriété style de ProgressBar. Mais je ne peux pas faire fonctionner cela correctement. Voici ce que j'ai fait jusqu'à présent:
J'ai créé une forme comme celle-ci (mp2.xml)
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="4"
android:thicknessRatio="4"
android:useLevel="false">
<size android:width="50dip" android:height="50dip" />
<gradient android:type="sweep" android:useLevel="false" android:startColor="#300000ff" android:centerColor="#500000ff" android:endColor="#ff0000ff" />
</shape>
puis créé une animation (mp3.xml) comme celle-ci:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="30" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="30" android:toDegrees="60" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="60" android:toDegrees="90" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="90" android:toDegrees="120" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="120" android:toDegrees="150" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="150" android:toDegrees="180" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="180" android:toDegrees="210" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="210" android:toDegrees="240" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="240" android:toDegrees="270" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="270" android:toDegrees="300" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="300" android:toDegrees="330" android:repeatCount="1" />
</item>
<item android:duration="70">
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/mp2" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="330" android:toDegrees="360" android:repeatCount="1" />
</item>
</animation-list>
puis créé un style (attrs.xml) comme celui-ci:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style parent="@android:style/Widget.ProgressBar" name="customProgressBar">
<item name="android:progressDrawable">@anim/mp3</item>
</style>
</resources>
et dans mon main.xml, j'ai défini le style comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:drawingCacheQuality="high">
<ProgressBar android:id="@+id/ProgressBar01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" style="@style/customProgressBar"/>
</LinearLayout>
Mais il montre toujours le même dessinable qu'avant. Qu'est-ce que je fais mal?
Réponses:
J'ai utilisé ce qui suit pour créer une barre de progression personnalisée.
Le fichier
res/drawable/progress_bar_states.xml
déclare les couleurs des différents états:Et le code à l'intérieur de votre mise en page xml:
Prendre plaisir!
la source
ProgressDialog
?J'avais du mal à utiliser une boîte de dialogue de progression indéterminée avec la solution ici, après quelques travaux et essais et erreurs, je l'ai fait fonctionner.
Commencez par créer l'animation que vous souhaitez utiliser pour la boîte de dialogue de progression. Dans mon cas, j'ai utilisé 5 images.
../res/anim/progress_dialog_icon_drawable_animation.xml:
Où vous souhaitez afficher un ProgressDialog:
Cette solution est vraiment simple et a fonctionné pour moi, vous pouvez étendre ProgressDialog et le faire remplacer le dessinable en interne, cependant, c'était vraiment trop compliqué pour ce dont j'avais besoin donc je ne l'ai pas fait.
la source
Essayez de régler:
Cela a fonctionné pour moi. Voici également le code pour progress.xml:
la source
android:drawable=
la balise de rotation, puis supprimez la forme. Enfin quelqu'un qui répond à la question de la barre de progression tournante.android:toDegrees
peut être réglée sur une valeur plus élevée. Le régler surandroid:toDegrees="1080"
augmentera la rotation en 3 fois.Votre style devrait ressembler à ceci:
la source
Progression personnalisée avec échelle!
la source
Je fais votre code. Je peux courir mais j'ai besoin de modifier deux endroits:
name="android:indeterminateDrawable"
au lieu deandroid:progressDrawable
modifier le nom attrs.xml ---> styles.xml
la source
Je ne suis pas sûr, mais dans ce cas, vous pouvez toujours utiliser un AlertDialog personnalisé complet en définissant un fichier de mise en page séparé dans la boîte de dialogue d'alerte et en définissant l'animation de votre imageview en utilisant une partie de votre code ci-dessus qui devrait également le faire!
la source
Et puis appelle
la source