gpt4 book ai didi

android - 如何重置组合 View 动画的状态

转载 作者:行者123 更新时间:2023-12-05 05:31:27 25 4
gpt4 key购买 nike

我正在构建一个入门 fragment ,为用户提供每个屏幕的提示。有几行的多个页面:

第 1 页

  • 这个图标就是这样做的
  • 那个图标就是这样做的

按钮:下一步

第 2 页

  • 这个图标就是这样做的
  • 那个图标就是这样做的

按钮:完成

我希望页面上的每个 View 在屏幕上逐渐淡入。

然后在新页面中,我希望项目重置并从上到下再次淡入。

我尝试过使用 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
)
}
}
}
}

最佳答案

我无法编译你的代码,尤其是 ActionResources,但基于此

I want to reset the state object on each recomposition.

我只能建议使用 line 参数为您的记住 {...} 提供一个key

 val state = remember (line) {
MutableTransitionState(false).apply {
// Start the animation immediately.
targetState = true
}
}

我不确定这是否能解决您的问题,但如果您希望此状态被重新计算,假设 line 参数在成功时总是不同的重新组合,然后将其用作remember {...}的 key 将保证重新计算.

关于android - 如何重置组合 View 动画的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74364394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com