作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个入门 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/
我是一名优秀的程序员,十分优秀!