Fade In Fade Out Android de l'Animation en Java
Je veux avoir une 2 seconde de l'animation d'une ImageView qui passe 1000ms en fondu et puis 1000ms fondu.
Voici ce que j'ai jusqu'à présent dans ma ImageView constructeur:
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);
Quand je lance cette animation, rien montre. Cependant, lorsque je supprime l'un de l'alpha animations, le comportement fonctionne comme prévu.
Choses que j'ai déjà essayé:
- Toutes les combinaisons imaginables de
setFillBefore
,setFillAfter
, etsetFillEnabled
. - L'ajout d'un
LinearInterpolator
à laAnimationSet
.
- Oui, vous pouvez afficher des images dans et hors! Ce tutoriel devrait faire l'affaire. sankarganesh-info-exchange.blogspot.com/2011/04/...
- Ce tutoriel décrit une méthode à l'aide de XML. Savez-vous comment obtenir la même chose à l'aide de Java?
- Eh bien, je ne suis pas à côté de ma programmation d'ordinateur donc je ne peux pas tester ce code, mais vous pouvez définir des attributs xml en java. c'est le code d'origine: android:interpolateur="@android:anim/accelerate_interpolator" android:fromAlpha="0.0" android:toAlpha="1.0" android:durée="300" /> \n de sorte que vous pouvez probablement MyTween.setDurationg(300) MyTween.fromAlpha(0.0) MyTween(1.0)
Vous devez vous connecter pour publier un commentaire.
Compris mon problème. La solution a fini par être fondée dans interpolateurs.
Si vous utilisez Kotlin
Je sais que cela a déjà été répondu, mais.....
Façon rapide et facile de rapidement faire un fondu d'entrée et de sortie avec une auto-répétition. Profitez de
MODIFIER :
Dans votre activité d'ajouter ceci:
alpha
ressources comment puis-je l'utiliser?. MerciviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)
, où il y a un fade_in_out.xml fichier dans l'anim sous-dossier res.Voici ma solution à l'aide AnimatorSet qui semble être un peu plus fiable que AnimationSet.
Une autre alternative:
Pas nécessaire de définir 2 animation pour fadeIn et fadeOut. fadeOut est l'inverse de fadeIn.
De sorte que vous pouvez faire cela avec Animation.INVERSE comme ceci:
puis onAnimationEnd:
Voici ce que j'ai utilisé pour fade in/out Vues, espérons que cela aide quelqu'un.
AnimationSets ne semblent pas fonctionner comme prévu à tous. En fin de compte, j'ai abandonné et utilisé le Gestionnaire de la classe postDelayed() de la séquence d'animations.
Que je crois en la puissance de XML (pour la présentation), c'est l'équivalent pour la accepté réponse, mais uniquement comme une animation de ressources:
La
fillAfter
est pour le fondu de rester après la fin de l'animation. Leinterpolator
poignées interpolation des animations, comme vous pouvez le deviner. Vous pouvez également utiliser d'autres types d'interpolateurs, comme Linéaire ou Dépassement.Assurez-vous de commencer votre animation sur votre point de vue:
Si vous utilisez Animateur pour faire de l'animation, vous pouvez
anim (répertoire) -> fade_out.xml
En java
Autre façon de faire de l'animation de fondu de sortie avec seulement le code java est
Vous pouvez également utiliser animationListener, quelque chose comme ceci: