para - manual de programacion android pdf
Fin animación evento android (5)
Ejemplo para Kotlin
var fadeOutImage = findViewById<ImageView>(R.id.fade_out_Image)
val fadeOutAnimation = R.anim.fade_out_animation
val animation = AnimationUtils.loadAnimation(this, fadeOutAnimation)
fadeOutImage.startAnimation(animation)
animation.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(p0: Animation?) {
// not implemented
}
override fun onAnimationRepeat(p0: Animation?) {
// not implemented
}
override fun onAnimationEnd(p0: Animation?) {
fadeOutImage.visibility = View.INVISIBLE
}
})
Tengo una animación de fadeout en una vista (que está dentro de un fragmento), y cada vez que ocurre la animación, una vez que termina, la vista se vuelve a dibujar nuevamente. Encontré un trabajo para hacer view.SetVisibility(View.GONE)
. Pero no espera a que termine la animación. Me gustaría ejecutar este código de setVisibility solo después de que la animación haya terminado. ¿Cuál es la mejor manera de hacer eso?
Funcionalmente igual a la respuesta aceptada, pero de una manera mucho más concisa:
/* Add/Remove any animation parameter */
theView.animate().alpha(0).setDuration(2000).withEndAction(new Runnable() {
@Override
public void run() {
theView.setVisibility(View.GONE);
}
});
Disfruta :)
Puede agregar un oyente de Animación a su objeto de animación como
anim.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
}
});
Simplemente tome su objeto de animación y agréguele un oyente de animación. Aquí está el código de ejemplo:
rotateAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
**// WRITE HERE WHATEVER YOU WANT ON THE COMPLETION OF THE ANIMATION**
}
});
También puede lograr esto usando Animation.setFillAfter