我正在构建一个引导页面的片段,为用户提供每个屏幕的提示。这里有几页,每页只有几行:
第一页
- 这个图标是干什么的
- 那个图标是干什么的
按钮:下一步
第二页
- 这个图标是干什么的
- 那个图标是干什么的
按钮:完成
我想让每个页面上的视图逐渐从屏幕底部淡入。
然后,对于新页面,我希望重置所有项目,并再次从顶部向下淡入。
我尝试使用AnimatedVisibility
,但问题在于元素保持其状态,因此在第二页上不会播放淡入效果。也许AnimatedVisibility
并不是我想要做的正确选择?
下面是一行代码。我希望在每次重新组合时重置状态对象。
或者,如果有人有更好的建议 - 那也是很好的。
@Composable
private fun Line(line: ActionResources, modifier: Modifier) {
val state = remember {
MutableTransitionState(false).apply {
// Start the animation immediately.
targetState = true
}
}
AnimatedVisibility(state,
enter = fadeIn(animationSpec = tween(durationMillis = 1000)),
exit = fadeOut(animationSpec = tween(durationMillis = 1000))
) {
Row(
modifier = modifier
.padding(16.dp)
) {
val color = line.color?.let { colorResource(it) } ?: MaterialTheme.colors.onSurface
line.icon?.also {
Icon(
painter = painterResource(it),
tint = color,
contentDescription = stringResource(id = R.string.menu_search),
modifier = Modifier.padding(end = 8.dp).size(24.dp)
)
}
line.label?.also {
Text(
modifier = Modifier,
style = MaterialTheme.typography.body1,
color = color,
text = it
)
}
}
}
}