2012-06-19 2 views
1

J'ai un AnimationSet qui fait 3 animations différentes. Une fois les animations terminées, je voudrais mettre l'application en pause pendant 3 secondes, avant que tout ne reprenne sa position initiale.Pause après animation

Comment faire cela?

Répondre

1

Je pense que vous pourriez probablement obtenir cet effet en quelque sorte avec un ensemble AnimationListener un pour obtenir un rappel lorsque votre animation se termine et ajouter un retard runnable qui se déplacera tout revient à la bonne position pour vous. Cependant, je pense qu'il pourrait être un peu compliqué de le faire de cette façon, car il faudrait définir fillAfter à vrai, puis placer manuellement vos vues dans leur position d'origine à l'intérieur de votre runnable est affiché avec un retard.

Je pense qu'une solution plus simple pour obtenir le même effet est d'ajouter simplement une 4ème animation à votre ensemble qui a un délai pour le faire démarrer après que tous les autres sont terminés. Faites en sorte que cette 4ème animation dure 3 secondes et qu'elle ne produise aucun effet visible (c'est-à-dire augmente de 0%). Cela devrait prendre une pause de 3 secondes pour vous permettre de ramener toutes vos vues à leur position d'origine (sans avoir à le faire manuellement). Avec cette solution, vous laisseriez fillAfter à false, ce qui entraînerait un «retour rapide» de vos vues. En ajoutant une autre animation qui dure 3 secondes mais n'a pas d'effet visible, cela semblera être une pause pour l'utilisateur.

+0

Ajout d'une animation qui n'a rien fait, mais qui a duré 3 secondes. – Peter

1

Eh bien, il existe une fonction animation.hasEnded() que vous pouvez utiliser pour tester si l'animation est terminée. Lorsque cela revient à true, vous pouvez utiliser une horloge Java pour planifier une tâche après plusieurs millisecondes d'attente. AnimationSet a également une fonction pour obtenir la durée des animations.

Jetez un oeil à ... Animation et AnimationSet