J'ai fait quelques recherches dans Android code, et j'ai vu l'utilisation de dans la barre de progression indéterminée. Après avoir essayé de créer mon propre dessinable avec cette balise:
<animated-rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:drawable="@drawable/spinner_pia"
Android:pivotX="50%"
Android:pivotY="50%"
Android:framesCount="12"
Android:frameDuration="100" />
J'obtiens une erreur: "Aucun identifiant de ressource trouvé pour l'attribut 'frameDuration' dans le package 'Android'" - ce qui signifie que frameDuration est un attribut privé. Existe-t-il un moyen d'utiliser cette fonction "animation-rotation"?
Ma tâche consiste à remplacer la barre de progression indéterminée par défaut du système. Je voudrais le faire avec le moins de code possible (changez simplement quelques attributs si possible). À l'aide de la vue ProgressBar, définissez:
Android:indeterminateOnly="true"
Android:indeterminateBehavior="cycle"
Android:indeterminateDuration="3500"
Android:indeterminateDrawable="@drawable/pia_sivuvator"
et pointer "@ drawable/pia_sivuvator" vers cet objet aurait rendu ma tâche aussi élégante que possible, mais je suis coincé sur ces attributs privés.
aidez-moi?
J'ai rencontré exactement le même problème. Vous pouvez exclure ces paramètres (framesCount et frameDuration), et cela peut fonctionner pour vous. J'ai essayé de les exclure et cela a bien fonctionné, mais la largeur/hauteur que je définissais n'était pas respectée, j'ai donc fini par créer une animation de rotation simple et une ImageView pour l'appliquer. Voici le fichier d'animation (res/anim/clockwise_rotation.xml):
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromDegrees="0"
Android:interpolator="@Android:anim/linear_interpolator"
Android:toDegrees="360"
Android:pivotX="50%"
Android:pivotY="50%"
Android:duration="1000"
Android:startOffset="0"
/>
Ensuite, vous gonflez simplement votre animation, définissez le nombre de répétitions et démarrez-le à partir de la vue
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);
Au lieu de créer une animation (plus de code requis, pas seulement la configuration XML), utilisez layer-list
comme ressource utilisable. Il est assez intéressant que layer-list
est bien plus fluide que animated-rotate
.
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<rotate
Android:drawable="@drawable/spinner_loading"
Android:pivotX="50%"
Android:pivotY="50%"
Android:fromDegrees="0"
Android:toDegrees="360"/>
</item>
</layer-list>
Ensuite, bien sûr, utilisez-le dans les styles comme l'écrit Mario Lenci:
<style name="YourProgressBarStyle" parent="@Android:style/Widget.ProgressBar">
<item name="Android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
Je ne sais pas comment contourner les attributs privés, j'ai le même problème.
Soit dit en passant, si vous souhaitez modifier ces attributs de la barre de progression:
Android:indeterminateOnly="true"
Android:indeterminateBehavior="cycle"
Android:indeterminateDuration="3500"
Android:indeterminateDrawable="@drawable/pia_sivuvator"
vous pouvez le faire facilement avec le framework Styles définissant dans le values/styles.xml
déposer un style ProgressBar étendant la norme Android one:
<style name="YourProgressBarStyle" parent="@Android:style/Widget.ProgressBar">
<item name="Android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
puis l'appliquer à la barre de progression dans le fichier de disposition xml.
...
<ProgressBar
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="@style/YourProgressBarStyle"/>
...
J'ai résolu cela en utilisant ce xml dessinable. Bien que cela ne semble fluide que sur les nouvelles versions d'Android:
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:drawable="@drawable/spinner_pia"
Android:fromDegrees="0"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toDegrees="1080" />
Voici l'explication simple de l'animation de rotation essayez ceci cela vous aidera
http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-Android.html
<rotate xmlns:Android="”http://schemas.Android.com/apk/res/Android”">
Android:duration="4000"
Android:fromdegrees="0"
Android:pivotx="50%"
Android:pivoty="50%"
Android:todegrees="360"
Android:toyscale="0.0"
</rotate>