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
,setFillAfter
ysetFillEnabled
. - Agregar un
LinearInterpolator
a 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
alpha
recurso, ¿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
fillAfter
es para que el desvanecimiento permanezca después de completar la animación. La interpolación deinterpolator
manijas 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