by Anonymous » 11 Apr 2025, 12:13
Ich habe Navigationsleiste mit animierten Symbolen erstellt. Verstehe nicht, warum dies geschieht < /p>
Code: < /p>
Code: Select all
@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)
}
)
}
}
}
Ich habe den ausgewählten Element -Index in meinem separaten ViewModel aufbewahrt. Gerüst wird in 3 Bildschirmen verwendet
Ich habe Navigationsleiste mit animierten Symbolen erstellt. Verstehe nicht, warum dies geschieht < /p>
Code: < /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]
Ich habe den ausgewählten Element -Index in meinem separaten ViewModel aufbewahrt. Gerüst wird in 3 Bildschirmen verwendet