我有下面的视图,设置为if else
,但我试图动画视图改变有一个微妙的淡入\淡出之间的SomeView()
和它的超级janky,不是很顺利。我看了文档,但它不清楚我是否可以有一个if else
的视图,可以动画之间?
有更好的办法吗?
Column {
donationItems.forEach { item ->
AnimatedVisibility(
item.productId == productIdSelected
){
SomeView()
}
AnimatedVisibility(
item.productId != productIdSelected
) {
SomeView2()
}
}
}
字符串
1条答案
按热度按时间qzwqbdag1#
如果要在if-else语句中合成动画,建议使用
AnimatedContent
而不是AnimatedVisibility
你不能直接将条件合并到if-else语句中,因为要发生UI更改,必须有状态更改。因此,你应该创建一个具有所需初始值的
MutableState
,然后将其传递给AnimatedContent
。每次你需要动画到不同的组合,你可以更改此状态的值。字符串
确保使用
AnimatedContent
发出的值来处理if语句中的条件(在上面的代码中为myState
)对于无jank-free动画,选择合适的动画API至关重要。对于无jank-free动画,选择合适的动画API至关重要。请参阅有关编写动画的Android官方文档,以做出明智的选择:Choosing the right animation API。