我开发了一个简单的 Android 应用程序,只需按下按钮即可将新项目插入列表中。新项目会立即弹出,看起来很草率。我尝试过为插入过程添加动画效果,但没有成功。
我尝试这样做的方法是给列表中的每个项目一个布尔值,以确定该项目是否可见。按下按钮时,布尔值设置为 true。
以下是代码:
这是每个列表项的数据类。它包含一个布尔值和一个字符串参数。
data class Item(
var isVisible: Boolean = false,
val text: String
)
这是 UI。它由一个列表、一个按钮和一个惰性列组成。按钮将新项目添加到列表中,并将 isVisible 参数设置为 true。列表显示在惰性列中。
Button(
onClick = {
items.add(
Item(isVisible = true, text = "Item ${items.size + 1}")
)
}
) {
Text("Add item")
}
LazyColumn {
items(items) { item ->
AnimatedVisibility(visible = item.isVisible) {
Text(text = item.text)
}
}
}
它不起作用。列表项仍然会立即弹出。
Jetpack Compose 引入了
animateItem
Modifier,它将为项目的插入、删除和重新排序提供动画效果。您可以按如下方式使用它:
请注意,您需要指定函数
key
的参数items
来为每个动画分配一个唯一的标识符,Item
以实现正确的动画。在上面的代码中,我们只是将整个数据类作为键。然后您需要确保每个数据类都有一个唯一的text
值。您至少需要 Jetpack Compose
1.7.0-beta06
才能使用animateItem
,或者按如下方式指定基础依赖版本: