У меня есть представление, которое начинает анимироваться, как только оно становится видимым. Входная анимация — это FadeIn+expandIn, анимация выхода — FadeOut+shrinkOut. В представлении есть кнопка закрытия. При нажатии я изменяю видимость на false, чтобы запускалась анимация выхода. Анимации работают правильно, если они не перекрываются.
Однако, если нажать кнопку закрытия до завершения анимации входа, я увижу довольно быструю анимацию выхода. Я ожидаю, что включу анимацию, чтобы остановить ее, и выйду из анимации, чтобы взять на себя управление и уменьшить представление с той точки, где оно было изящно расширено.
Как я могу заставить работать ожидаемое поведение?
val visibleState = remember {
MutableTransitionState(false).apply {
// Start the animation immediately.
targetState = true
}
}
AnimatedVisibility(
enter = fadeIn(
animationSpec = keyframes {
this.durationMillis = animationDuration
},
) + expandIn(
animationSpec = keyframes {
this.durationMillis = animationDuration
},
),
exit = fadeOut(
animationSpec = keyframes {
this.durationMillis = animationDuration
},
) + shrinkOut(
animationSpec = keyframes {
this.durationMillis = animationDuration
},
),
visibleState = visibleState,
) {
...
Button(
onClick = {
visibleState.targetState = false
},
...
)
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... in-animate