android Jetpack撰写动画波涛汹涌不断变化的意见

4bbkushb  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(141)

我有下面的视图,设置为if else,但我试图动画视图改变有一个微妙的淡入\淡出之间的SomeView()和它的超级janky,不是很顺利。我看了文档,但它不清楚我是否可以有一个if else的视图,可以动画之间?
有更好的办法吗?

  1. Column {
  2. donationItems.forEach { item ->
  3. AnimatedVisibility(
  4. item.productId == productIdSelected
  5. ){
  6. SomeView()
  7. }
  8. AnimatedVisibility(
  9. item.productId != productIdSelected
  10. ) {
  11. SomeView2()
  12. }
  13. }
  14. }

字符串

qzwqbdag

qzwqbdag1#

如果要在if-else语句中合成动画,建议使用AnimatedContent而不是AnimatedVisibility
你不能直接将条件合并到if-else语句中,因为要发生UI更改,必须有状态更改。因此,你应该创建一个具有所需初始值的MutableState,然后将其传递给AnimatedContent。每次你需要动画到不同的组合,你可以更改此状态的值。

  1. var isProductSelected by remember{ mutableStateOf(false) }
  2. Column {
  3. donationItems.forEach { item ->
  4. AnimatedContent(targetState = isProductSelected) {myState->
  5. if (myState == true ){ // <-your condition
  6. SomeView()
  7. }else{
  8. SomeView2()
  9. }
  10. }
  11. }
  12. }

字符串
确保使用AnimatedContent发出的值来处理if语句中的条件(在上面的代码中为myState
对于无jank-free动画,选择合适的动画API至关重要。对于无jank-free动画,选择合适的动画API至关重要。请参阅有关编写动画的Android官方文档,以做出明智的选择:Choosing the right animation API

展开查看全部

相关问题