Personnalisé Drawable pour ProgressBar/ProgressDialog
La lecture de la documentation limitée que Google a fourni, j'ai le sentiment qu'il est possible de changer l'apparence (drawable) d'une ProgressBar/ProgressDialog en créant tout simplement un nouveau style une de l'affecter à la propriété de style de la ProgressBar. Mais je ne peux pas obtenir que cela fonctionne 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>
ensuite créé une animation (mp3.xml) comme ceci:
<?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>
ensuite créé un style (attrs.xml) comme ceci:
<?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 le mon main.xml j'ai mis 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 affiche toujours le même dessiné comme avant. Ce que je fais mal?
- Vient de se passer à la navigation des échantillons et suis tombé sur le vôtre après la lecture de ceci. Espérons que cela résout votre problème.
- Je savais comment créer des formes/gradiant/animation. Celui que j'ai créé ci-dessus est basé sur l'affichage l'on se réfère à (j'ai dû changer un peu becase il a l'air très instable et lent). J'espérais juste pour être en mesure de réaliser cela en utilisant le "style". Merci pour la reponce de toute façon
- Si vous souhaitez personnaliser votre barre de progression et de vraiment faire de la fantaisie ont un coup d'oeil à ce post Il pourrait être un peu au-delà de ce que tu voulais, ou peut-être juste ce que vous cherchez. Espérons que cela aide!
InformationsquelleAutor Sam | 2010-05-12
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé les méthodes suivantes pour créer une barre de progression personnalisée.
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:
Profitez-en!
ProgressDialog
?<clip>
balises. Simplement laisser ici.J'ai eu quelques problèmes à l'aide d'une Progression Indéterminée Dialogue avec la solution ici, après un peu de travail et d'essai et d'erreur je l'ai eu à travailler.
Tout d'abord, créer de 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 travaillé pour moi, vous pouvez étendre ProgressDialog et de substituer le drawable en interne, cependant, c'était vraiment trop compliqué pour ce que j'ai besoin, alors je ne l'ai pas.
Essayez de définir:
Il a travaillé pour moi. Voici le code de progress.xml:
android:drawable=
dans la rotation de la balise, puis supprimer la forme. Enfin quelqu'un qui répond à la filature de la barre de progression question.Votre style devrait ressembler à ceci:
De progression personnalisée avec l'échelle!
je n'votre code .je peux courir mais j'ai besoin de modifier deux endroits:
name="android:indeterminateDrawable"
au lieu deandroid:progressDrawable
modifier le nom de attrs.xml ---> styles.xml
Je ne suis pas sûr, mais dans ce cas vous pouvez toujours aller avec un ensemble complet personnalisé AlertDialog en ayant un autre fichier de mise en page définie dans la boîte de dialogue d'alerte et de définir l'animation pour votre imageview, en utilisant une partie de votre code ci-dessus, qui devrait aussi faire!
Et ensuite appeler