Je veux avoir une animation de 2 secondes d'un ImageView qui passe 1000 ms à fondu puis 1000 ms à disparaître.
Voici ce que j'ai jusqu'à présent dans mon constructeur ImageView:
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);
Lorsque je lance cette animation, rien ne s'affiche. Cependant, lorsque je supprime l'une des animations alpha, le comportement fonctionne comme prévu.
Choses que j'ai déjà essayées:
- Toutes les combinaisons imaginables
setFillBefore
,setFillAfter
etsetFillEnabled
. - Ajouter un
LinearInterpolator
auAnimationSet
.
Réponses:
J'ai compris mon propre problème. La solution a fini par reposer sur des interpolateurs.
Si vous utilisez Kotlin
la source
Je sais que cela a déjà été répondu mais .....
Un moyen rapide et facile de faire rapidement un fondu entrant et sortant avec une répétition automatique. Prendre plaisir
EDIT : Dans votre activité, ajoutez ceci:
la source
alpha
ressource, comment puis-je l'utiliser?. MerciviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)
:, où il y a un fichier fade_in_out.xml dans le dossier anim sous res.la source
Voici ma solution utilisant AnimatorSet qui semble être un peu plus fiable que AnimationSet.
la source
Une autre alternative:
Pas besoin de définir 2 animations pour fadeIn et fadeOut . fadeOut est l'inverse de fadeIn .
Vous pouvez donc le faire avec Animation.REVERSE comme ceci:
puis onAnimationEnd :
la source
Comme je crois en la puissance de XML (pour les mises en page), c'est l'équivalent de la réponse acceptée , mais uniquement en tant que ressource d'animation:
Le
fillAfter
fait que le fondu reste après la fin de l'animation. Lesinterpolator
poignées interpolation des animations, comme vous pouvez le deviner. Vous pouvez également utiliser d'autres types d'interpolateurs, tels que Linéaire ou Dépassement.Assurez-vous de démarrer votre animation sur votre vue:
la source
Voici ce que j'utilisais pour fondre les vues d'entrée / sortie, j'espère que cela aide quelqu'un.
la source
Les AnimationSets ne semblent pas du tout fonctionner comme prévu. À la fin, j'ai abandonné et utilisé le postDelayed () de la classe Handler pour séquencer les animations.
la source
Si vous utilisez Animator pour créer une animation, vous pouvez
anim (répertoire) -> fade_out.xml
En java
Une autre façon de faire disparaître l'animation avec uniquement du code Java est
la source
Vous pouvez également utiliser animationListener, quelque chose comme ceci:
la source
J'aime vraiment la solution Vitaly Zinchenkos car elle était courte.
Voici une version encore plus brève de kotlin pour un simple fondu
la source