Я работаю над анимацией в 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
Почему анимация Fade-In не происходит без задержки на 100 мс в запуску в JetPack Compose? ⇐ Android
Форум для тех, кто программирует под Android
1740247570
Anonymous
Я работаю над анимацией в 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)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79460060/why-is-the-fade-in-animation-not-happening-without-a-100ms-delay-in-launchedeffe[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия