Mam animację znikającą w widoku (która jest wewnątrz fragmentu) i za każdym razem, gdy animacja się dzieje, po jej zakończeniu widok ponownie się odrysowuje. Znalazłem pracę związaną z robieniem view.SetVisibility(View.GONE)
. Ale nie czeka na zakończenie animacji. Chciałbym wykonać ten kod setVisibility dopiero po zakończeniu animacji. Jaki jest najlepszy sposób na zrobienie tego?Zdarzenie zakończenia animacji android
Odpowiedz
Możesz dodać słuchacza animacji do obiektu animacji jak
anim.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
}
});
Jeśli chcesz, aby animacja znikała ponownie, gdy animacja jest w toku, użyj 'if (! anim.hasStarted() || anim.hasEnded())', aby sprawdzić, czy animacja jest nadal bieganie. – theczechsensation
można również osiągnąć stosując Animation.setFillAfter
Użyłem tego, aby rozwiązać to wcześniej. –
Wystarczy wziąć swój obiekt animacji i dodać animacji słuchacza do niego. Oto przykładowy kod:
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**
}
});
Funkcjonalnie taka sama jak zaakceptowanej odpowiedzi, ale w znacznie bardziej zwięzły sposób:
/* Add/Remove any animation parameter */
theView.animate().alpha(0).setDuration(2000).withEndAction(new Runnable() {
@Override
public void run() {
theView.setVisibility(View.GONE);
}
});
Enjoy :)
Wyczyść i jedno-liniowy. Najlepsza odpowiedź! Można go sprowadzić za pomocą lambda '.withEndAction (() -> theView.setVisibility (View.GONE));' – theBugger
tylko w ten sposób dzięki niestandardowym animacjom ... dzięki bro –
Należy pamiętać, że jest to poziom interfejsu API 16 (4.1) i powyżej. – Tommie
postu kod jak jesteś przedstawiający animacja .... –