Ich habe eine Ausblendanimation in einer Ansicht (die sich in einem Fragment befindet), und jedes Mal, wenn die Animation ausgeführt wird, zeichnet sich die Ansicht nach Abschluss erneut aus. Ich habe eine Arbeit gefunden view.SetVisibility(View.GONE)
. Es wartet jedoch nicht darauf, dass die Animation beendet ist. Ich möchte diesen setVisibility-Code erst ausführen, nachdem die Animation beendet ist. Was ist der beste Weg das zu tun?
android
android-fragments
android-animation
Paulo Barros
quelle
quelle
Antworten:
Sie können Ihrem Animationsobjekt wie folgt einen Animationslistener hinzufügen
quelle
if (!anim.hasStarted() || anim.hasEnded())
mit feststellen, ob die Animation noch ausgeführt wird.Funktionell identisch mit der akzeptierten Antwort, jedoch viel prägnanter:
Genießen :)
quelle
.withEndAction(() -> theView.setVisibility(View.GONE));
Sie können dies auch mit Animation.setFillAfter erreichen
quelle
Nehmen Sie einfach Ihr Animationsobjekt und fügen Sie ihm einen Animationslistener hinzu. Hier ist der Beispielcode:
quelle
Beispiel für Kotlin
quelle
fade_out_Image.animate().alpha(0f).setDuration(100L).withEndAction {fade_out_Image.visibility = View.GONE}.start()