Я создал навигационную панель с анимированными значками, , когда я нажимаю на изменение экрана элемента, а значок элемента, который я нажал, - это анимирование , но когда я нажимаю другой элемент, анимация предыдущего элемента сразу же сбрасывается, но мне нужно воспроизвести его обратно. Не понимаю, почему это происходит < /p>
код: < /p>
Я создал навигационную панель с анимированными значками, [b], когда я нажимаю на изменение экрана элемента, а значок элемента, который я нажал, - это анимирование [/b] , но когда я нажимаю другой элемент, анимация предыдущего элемента сразу же сбрасывается, но мне нужно воспроизвести его обратно. Не понимаю, почему это происходит < /p> код: < /p> [code]@OptIn(ExperimentalAnimationGraphicsApi::class) @Composable fun NavBar( onNavItemClick:(Int, Any) -> Unit, selectedItemIndex: Int ) { NavigationBar { navItems.forEachIndexed { index, navItem -> val isSelected = index == selectedItemIndex var animatedSelection by rememberSaveable { mutableStateOf(false) }
//Change local state to start animation LaunchedEffect(isSelected) { animatedSelection = isSelected }
val animatedImage = AnimatedImageVector.animatedVectorResource(navItem.icon) val animatedPainter = rememberAnimatedVectorPainter(animatedImageVector = animatedImage, atEnd = animatedSelection)
NavigationBarItem( selected = isSelected, onClick = { if(!isSelected) { onNavItemClick(index, navItem.destination) } }, icon = { Image( painter = animatedPainter, contentDescription = null, colorFilter = ColorFilter.tint(mColors.onSecondaryContainer) ) }, label = { Text(navItem.label) } ) } } } [/code] Я держу выбранное индекс элементов в моем отдельном ViewModel, каркас используется на 3 экранах