Я работаю над анимацией в Jetpack Compose, где я хочу отображать числа с эффектом затухания и исчезновения. Каждый номер должен исчезнуть, затем новый номер должен исчезнуть, и этот процесс должен повторяться. Тем не менее, я сталкиваюсь с странной проблемой: < /p>
Проблема: < /strong>
Анимация затухания не произойдет, если я не задерживаю небольшую задержку (Задержка (100)).
Если я опускаю задержку (100), число мерцает, когда оно появляется (внезапно появляется без затухания).
Я уже установил продолжительность Fadein в твина (), но без этой небольшой задержки, Fade-In не происходит. < /p>
Ожидаемое поведение < /strong>:
Предыдущее число исчезает (с указанной продолжительностью погибки).
Новое число исчезает (с указанной продолжительностью Fadein).
Каждый цикл происходит без мерцания. линия Задержка (100) < /p>
Вот код, который я использую: < /p>
internal class MainActivity : AppCompatActivity() {
private val state by lazy { mutableIntStateOf(1) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
BannerWithAnimation(state.intValue)
}
lifecycleScope.launch {
delay(2000)
state.intValue = 20
}
lifecycleScope.launch {
delay(40000)
state.intValue = 55
}
}
}
@Composable
fun BannerWithAnimation(num: Int) {
var currentNum by remember { mutableIntStateOf(num) }
var isVisible by remember { mutableStateOf(true) }
LaunchedEffect(num) {
if (num != 1) {
// Fade out the previous number
isVisible = false
delay(7000) // Wait for the previous number's fade-out duration
delay(100) // This small delay is necessary to prevent flickering and trigger fade-in
currentNum = num
// Fade in the new number
isVisible = true
}
}
AnimatedVisibility(
visible = isVisible,
enter = fadeIn(animationSpec = tween(15000)),
exit = fadeOut(animationSpec = tween(7000))
) {
Text(text = "$currentNum", color = Color.Cyan, fontSize = 220.sp)
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... unchedeffe