J'ai des vues de texte et je veux faire l'effet Buzz de MSN. P>
Mon plan est: P>
Mon point est que j'ai une séquence de mouvements que je veux définir sur une vue et que cela doit s'exécuter l'un après l'autre. P>
Comment puis-je faire ça? P>
3 Réponses :
Utilisez un Animationset :
AnimationSet set = new AnimationSet(true); Animation animation = new AlphaAnimation(0.0f, 1.0f); animation.setDuration(100); set.addAnimation(animation); animation = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f ); animation.setDuration(500); set.addAnimation(animation); view.startAnimation( set );
Quoi??? C'est faux, animationet anime ses animations enfants ensemble. "Animationset: représente un groupe d'animations qui devraient être jouées ensemble."
Animationsset effectue des animations asynchrones. Pour atteindre l'effet souhaité, vous devez utiliser des animationset.setStartOffsetOffset () dans la deuxième animation
Cette réponse n'est pas correcte. Les animations vont se lancer simultanément.
Je suis d'accord, cette réponse est juste fausse. Mais je ne peux pas le supprimer car il a été accepté ... @Lukap, veuillez l'accepter.
Il suffit d'essayer des animationset et de ne pas chaîner une animation. Ils sont exécutés en même temps. Cette réponse est fausse.
Pouvez-vous au moins le modifier? C'est vraiment déroutant.
Je ne peux pas le supprimer ni comme ça n'a été accepté ... @Lukap, s'il vous plaît, n'acceptez-le et de me ping me.
Ceci est en effet parfaitement utilisable: `animation.duration = 100; animup.duration = 300; animup.startoffset = animationdown.duration; val ensemble = animationet (vrai); set.addanimation (animation); set.addanimation (animup); View.startanimation (Set); `
Vous voulez probablement dire animateur (pas Animationset ). Comme écrit dans la documentation:
Cette classe joue un ensemble d'animateurs code> d'animateur dans la commande
spécifiée forte>. Les animations peuvent être configurées pour jouer ensemble, en séquence ou après un délai spécifié. P> Il existe deux approches différentes pour ajouter des animations à un animateur: soit le
PlaytOtoGether () code> ou
ultérieurement () code> Les méthodes peuvent être appelées à ajouter un ensemble d'animations tout à Une fois ou la lecture
(animateur) code> peut être utilisée conjointement avec des méthodes dans la classe code> de la classe code> pour ajouter des animations un par un. p> blockQuote>
Animation qui déplace
Voir code> par
-100px code> pour
700ms "> puis disparaît pendant
300ms code>: p>
xxx pré> p>
N'OUBLIEZ PAS AnimAset.Start () Code>
J'ai les débuts d'une classe compatible SDK 15 pouvant être utilisée pour construire des chaînes d'animation complexes, espérons que cela aide quelqu'un. Vous devriez être capable de suivre le modèle de conception pour ajouter vos propres méthodes. Si vous faites, veuillez les commenter ici et je mettrai à jour la réponse, acclamations!
package com.stuartclark45.magicmatt.util; import java.util.LinkedList; import java.util.List; import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.view.View; /** * Used to build complex animations for a view. Example usage bellow makes view move out to the * right whilst rotating 45 degrees, then move out to the left. * * {@code * int rotateDuration = 200; * int rotation = 45; * new AnimationBuilder(view) * .translationX(100, rotateDuration) * .rotateTo(rotation, rotateDuration) * .then() * .translationX(-200, rotateDuration) * .start(); * } * * @author Stuart Clark */ public class AnimationBuilder { private View view; private List<Animator> setsList; private List<Animator> buildingList; public AnimationBuilder(View view) { this.view = view; this.setsList = new LinkedList<>(); this.buildingList = new LinkedList<>(); } public AnimationBuilder rotateTo(float deg, long duration) { buildingList.add(ObjectAnimator.ofFloat(view, "rotation", deg).setDuration(duration)); return this; } public AnimationBuilder translationX(int deltaX, long duration) { buildingList.add(ObjectAnimator.ofFloat(view, "translationX", deltaX).setDuration(duration)); return this; } public AnimationBuilder translationY(int deltaX, long duration) { buildingList.add(ObjectAnimator.ofFloat(view, "translationY", deltaX).setDuration(duration)); return this; } public AnimationBuilder then() { createAniSet(); // Reset the building list buildingList = new LinkedList<>(); return this; } public void start() { createAniSet(); AnimatorSet metaSet = new AnimatorSet(); metaSet.playSequentially(setsList); metaSet.start(); } private void createAniSet() { AnimatorSet aniSet = new AnimatorSet(); aniSet.playTogether(buildingList); setsList.add(aniSet); } }