Eu tenho uma animação de fadeout em uma visão (que está dentro de um fragmento), e toda vez que a animação acontece, depois que termina a visão se redesenha novamente. Eu encontrei um jeito de fazer view.SetVisibility(View.GONE)
. Mas não espera a animação terminar. Eu gostaria de executar este código setVisibility somente depois que a animação terminar. Qual o melhor jeito pra fazer isso?
android
android-fragments
android-animation
Paulo Barros
fonte
fonte
Respostas:
Você pode adicionar ouvinte de animação ao seu objeto de animação, como
fonte
if (!anim.hasStarted() || anim.hasEnded())
para detectar se a animação ainda está em execução.Funcionalmente igual à resposta aceita, mas de uma forma muito mais concisa:
Aproveitar :)
fonte
.withEndAction(() -> theView.setVisibility(View.GONE));
Você também pode fazer isso usando Animation.setFillAfter
fonte
Simplesmente pegue seu objeto de animação e adicione ouvinte de animação a ele. Aqui está o código de exemplo:
fonte
Exemplo para Kotlin
fonte
fade_out_Image.animate().alpha(0f).setDuration(100L).withEndAction {fade_out_Image.visibility = View.GONE}.start()