Как я могу запустить другое действие после окончании анимации? - Java
Пытался так
Animation zoom, zoom_out;
zoomAnimation();
private void zoomAnimation() {
zoom= AnimationUtils.loadAnimation(this,R.anim.fast_zoomin);
avatar.startAnimation(zoom);
if (zoom.hasEnded()){
zoomoutAnimation();
}
}
private void zoomoutAnimation() {
zoom_out= AnimationUtils.loadAnimation(this,R.anim.fast_zoomout);
avatar.startAnimation(zoom_out);
}
Ответы (2 шт):
Автор решения: Binary
→ Ссылка
val animation = AnimatorInflater.loadAnimator(applicationContext, R.animator.flipping) as ObjectAnimator
animation.duration = 2000
animation.start()
animation.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {}
override fun onAnimationEnd(animation: Animator) {
//Нужная функция
}
override fun onAnimationCancel(animation: Animator) {}
override fun onAnimationRepeat(animation: Animator) {}
})
Автор решения: Biron1gg
→ Ссылка
Я сделал так, чтобы при старте анимации прошло ровно столько секунд, сколько длится анимация, после этого начнется другое действие (C помощь метода Handler).
private void zoomAnimation() {
zoom = AnimationUtils.loadAnimation(this,R.anim.fast_zoomin);
zoom_out = AnimationUtils.loadAnimation(this,R.anim.fast_zoomout);
avatar.startAnimation(zoom);
if (!zoom.hasStarted()){
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
avatar.startAnimation(zoom_out);
}
}, 1500); //секунды после чего начнется другое действие при
//условии, что началось первое
}
}