54 votes

Android Animate Rotate

J'ai fait quelques recherches dans le code Android, et vu l'utilisation de la barre de progression indéterminée. après avoir essayé de créer mon propre dessinés 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 identificateur de ressource trouvé pour l'attribut 'frameDuration' package 'android'" - ce qui signifie que frameDuration est un attribut privé. Est-il possible d'utiliser cette "animation-rotation" fonctionnalité?

Ma tâche est de remplacer le système par défaut de la barre de progression indéterminée. J'aimerais le faire avec aussi peu de code que possible (il suffit de changer quelques attributs si possible). À l'aide de la Barre de vue, le réglage:

android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

et le point "@drawable/pia_sivuvator" à cet objet serait de rendre ma tâche aussi élégant comme ils viennent, mais je suis bloqué sur les attributs.

de l'aide?

61voto

Ian G. Clifton Points 4648

J'ai rencontré exactement le même problème. Vous pouvez exclure ces paramètres (framesCount et frameDuration), et il peut travailler pour vous. J'ai essayé tout à exclure et il a animé très bien, mais la largeur/hauteur, j'ai été paramètre n'étaient pas respectés, alors j'ai fini par la création d'une simple rotation de l'animation et une ImageView de 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"
/>

Alors que vous venez de gonfler votre Animation, nombre de répétitions, et de commencer à partir de la Vue

Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);

10voto

rwozniak Points 128

Au lieu de créer une animation (plus de code est nécessaire, pas seulement la configuration XML), utilisez layer-list comme ressource utilisable. Il est intéressant de noter que layer-list est beaucoup 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>
 

Ensuite, bien sûr, utilisez-le dans les styles écrits par Mario Lenci:

 <style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
    <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
 

8voto

Mario Lenci Points 3214

Je ne sais pas comment contourner les attributs privés, j'ai le même problème.

Au fait, si vous voulez changer ces attributs de ProgressBar:

 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 fichier values/styles.xml un style ProgressBar qui étend le style android standard:

 <style name="YourProgressBarStyle" parent="@android:style/Widget.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
    </style>
 

puis en l'appliquant à la barre de progression dans le fichier de présentation XML.

 ...
<ProgressBar
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="@style/YourProgressBarStyle"/>
...
 

5voto

Intrications Points 8182

J'ai résolu ce problème en utilisant ce fichier XML dessinable. Bien que cela ne semble se faire 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" />
 

4voto

Bhushan Points 67

Voici l'explication simple de l'animation de rotation essayez ceci ceci 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>
 

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