Tengo una animación de desvanecimiento en una vista (que está dentro de un fragmento), y cada vez que ocurre la animación, después de que termina, la vista se vuelve a dibujar. Encontré un trabajo por hacer view.SetVisibility(View.GONE)
. Pero no espera a que termine la animación. Me gustaría ejecutar este código setVisibility solo después de que la animación haya terminado. ¿Cuál es la mejor forma de hacerlo?
android
android-fragments
android-animation
Paulo Barros
fuente
fuente
Respuestas:
Puede agregar un oyente de animación a su objeto de animación como
fuente
if (!anim.hasStarted() || anim.hasEnded())
para detectar si la animación aún se está ejecutando.Funcionalmente igual que la respuesta aceptada pero de una manera mucho más concisa:
Disfruta :)
fuente
.withEndAction(() -> theView.setVisibility(View.GONE));
También puede lograr esto usando Animation.setFillAfter
fuente
Simplemente tome su objeto de animación y agréguele un oyente de animación. Aquí está el código de ejemplo:
fuente
Ejemplo para Kotlin
fuente
fade_out_Image.animate().alpha(0f).setDuration(100L).withEndAction {fade_out_Image.visibility = View.GONE}.start()