2017-10-10 4 views
0

Je souhaite mettre un certain délai pour démarrer une animation. Ainsi, lorsqu'une animation ne va pas se répéter, nous pouvons facilement utiliser la propriété startOffset. La chose est que j'ai une animation qui va se répéter indéfiniment. Mais je dois le démarrer avec un retard, donc quand j'utilise startOffset, l'animation répète toujours avec ce délai qui n'est pas ce que je veux. Aussi, je ne veux pas utiliser Handler pour créer un délai.Définir le décalage de début pour une animation répétitive uniquement pour le démarrage

EDIT:

Je n'ai jamais utilisé ObjectAnimator. Mon code est comme ci-dessous mais il n'anime pas. Quelle est mon erreur?

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", 1000, -1000); 
objectAnimator.setDuration(ANIMATION_DURATION); 
objectAnimator.setRepeatMode(ValueAnimator.RESTART); 
objectAnimator.setRepeatCount(ValueAnimator.INFINITE); 
objectAnimator.setStartDelay((5 - i) * INTERVAL); 
AnimatorSet animatorSet = new AnimatorSet(); 
animatorSet.play(objectAnimator); 
animatorSet.start(); 
+0

'De plus, je ne veux pas utiliser Handler pour créer un delay' - pourquoi? – azizbekian

+0

Parce que l'animation sera affectée à de nombreuses vues et n'importe où au milieu de tout ce que je dois supprimer toutes les animations. Donc, si j'utilise le gestionnaire, je dois supprimer les rappels pour chaque vue. –

+0

puis utilisez 'AnimatorSet' avec un offset jouant normalement l'animation répétitive - je pense que cela devrait fonctionner – pskink

Répondre

0

Si vous utilisez VectorDrawable et AnimatedVectorDrawable dans des fichiers XML dans res/dossier étirables et défini votre animation dans un fichier objectAnimator dans res/dossier animateur puis le retard startOffset fonctionne la première fois que non pendant les répétitions. Les répétitions sont immédiates. D'un autre côté, si vous voulez que l'animation commence avec le delay chaque fois qu'elle se répète, je crois que la fonction de réinitialisation d'AnimationEnd fonctionne.