Quiero tener una animación de 2 segundos de un ImageView que gasta 1000ms desvaneciéndose y luego 1000ms desvaneciéndose.
Esto es lo que tengo hasta ahora en mi constructor 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);
Cuando ejecuto esa animación, no aparece nada . Sin embargo, cuando elimino una de las animaciones alfa, el comportamiento funciona como se esperaba.
Cosas que ya he probado:
- Todas las combinaciones imaginables de
setFillBefore,setFillAfterysetFillEnabled. - Agregar un
LinearInterpolatora laAnimationSet.

Respuestas:
Descubrí mi propio problema. La solución terminó por basarse en interpoladores.
Si está usando Kotlin
fuente
Sé que esto ya ha sido respondido pero .....
Forma rápida y fácil de hacer un fundido de entrada y salida con una repetición automática. Disfrutar
EDITAR : en su actividad agregue esto:
fuente
alpharecurso, ¿cómo puedo usarlo? GraciasviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)donde hay un archivo fade_in_out.xml en la carpeta anim bajo res.fuente
Aquí está mi solución usando AnimatorSet, que parece ser un poco más confiable que AnimationSet.
fuente
Otra alternativa:
No es necesario definir 2 animaciones para fadeIn y fadeOut . fadeOut es inverso a fadeIn .
Entonces puedes hacer esto con Animation.REVERSE así:
luego enAnimationEnd :
fuente
Como creo en el poder de XML (para diseños), este es el equivalente de la respuesta aceptada , pero puramente como un recurso de animación:
El
fillAfteres para que el desvanecimiento permanezca después de completar la animación. La interpolación deinterpolatormanijas de las animaciones, como puedes adivinar. También puede usar otros tipos de interpoladores, como Linear o Overshoot.Asegúrese de comenzar su animación en su vista:
fuente
Esto es lo que solía desvanecer en Vistas, espero que esto ayude a alguien.
fuente
AnimationSets no parecen funcionar como se esperaba en absoluto. Al final me di por vencido y usé el postDelayed () de la clase Handler para secuenciar animaciones.
fuente
Si usa Animator para hacer animación, puede
anim (directorio) -> fade_out.xml
En java
Otra forma de hacer que la animación se desvanezca con solo código java es
fuente
También puedes usar animationListener, algo como esto:
fuente
Realmente me gusta la solución de Vitaly Zinchenkos ya que fue corta.
Aquí hay una versión aún más breve en Kotlin para un desvanecimiento simple
fuente