Код: Выделить всё
@OptIn(ExperimentalAnimationApi::class)
@Composable
fun CustomAnimatedVisibilityDemo(
modifier: Modifier = Modifier
) {
var visible by remember { mutableStateOf(true) }
Column(
modifier = modifier.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
// Wrap everything inside AnimatedVisibility
AnimatedVisibility(
visible = visible,
enter = fadeIn(animationSpec = tween(1000)) + slideInVertically(initialOffsetY = { -it }),
exit = fadeOut(animationSpec = tween(1000)) + slideOutVertically(targetOffsetY = { it })
) {
Column(
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
// First Box with default parent animation (fadeIn & fadeOut)
Box(
modifier = Modifier
.size(200.dp)
.clip(RoundedCornerShape(8.dp))
.background(Color.Green),
contentAlignment = Alignment.Center
) {
Text(text = "Fade Box")
}
// Second Box with a custom slide animation
Box(
modifier = Modifier
.size(200.dp)
.clip(RoundedCornerShape(8.dp))
.background(Color.Blue)
.animateEnterExit(
enter = expandVertically(animationSpec = tween(1200)) + fadeIn(),
exit = shrinkVertically(animationSpec = tween(800)) + fadeOut()
),
contentAlignment = Alignment.Center
) {
Text(text = "Slide Box")
}
}
}
// Toggle visibility button
Button(onClick = { visible = !visible }) {
Text(text = "Toggle")
}
}
}
< /code>
< /li>
[*] Composable, в котором он не работает: < /p>
@OptIn(ExperimentalAnimationApi::class)
@Composable
fun AnimateAppAndDisApp(
modifier: Modifier = Modifier
) {
var visible by remember { mutableStateOf(false) }
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = { visible = !visible }) {
Text(if (visible) "Hide" else "Show")
}
Spacer(modifier = Modifier.height(20.dp))
AnimatedVisibility(
visible = visible,
enter = fadeIn(animationSpec = tween(1000)) + slideInVertically(initialOffsetY = { -it }),
exit = fadeOut(animationSpec = tween(1000)) + slideOutVertically(targetOffsetY = { it })
) {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
// Default animation
Text("Default Animation 1")
Spacer(modifier = Modifier.height(10.dp))
// Overridden animation
BasicText(
"Custom Animation",
modifier = Modifier.animateEnterExit(
enter = expandVertically(animationSpec = tween(1200)) + fadeIn(),
exit = shrinkVertically(animationSpec = tween(800)) + fadeOut()
)
)
Spacer(modifier = Modifier.height(10.dp))
// Default animation
Text("Default Animation 2")
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... t-in-other