如何在不使用 animateItemPlacement() 的情况下对项目放置进行动画处理

How to animate item placement without using animateItemPlacement()

提问人:Adil Bhatty 提问时间:7/30/2023 更新时间:7/30/2023 访问量:230

问:

我有一个复杂的组合布局,我在单个惰性列中呈现不同的 UI 组件。因为如果不为子懒惰列定义固定高度,我就不能做嵌套的惰性列,这是我不想做的。

其中一个子 UI 组件托管行(最多 3 行)。它基本上是一列,当我获取数据时,我会向它添加三行,并且随着我们获取数据,行内容会不断变化 我想实现类似于 animateItemPlacement() 提供的东西,因为当添加新行时,它会对整个列表进行动画处理,但由于我没有使用惰性列,因此我无法实现这一点。试图找到一种替代方法来实现这种没有延迟列范围的动画

Android 列表视图 动画 android-jetpack-compose

评论

0赞 Adil Bhatty 7/31/2023
为了进一步解释我想要什么,我想创建一个滚动堆栈,其中三个项目始终可见,当添加一个新项目时,它来自堆栈的顶部,而最后一个项目退出视图。这一切都没有 LazyColumn

答:

0赞 Al-Taie 7/30/2023 #1

尝试在你的modifierColumn

修改器对大小更改进行动画处理。animateContentSize

Column(modifier = Modifier.animateContentSize()) {
  ...
}

注意:修改器链中位置的顺序很重要。要获得流畅的动画,请确保将其放置在任何大小修饰符(如 或)之前,以确保报告动画值更改到布局。animateContentSizesizedefaultMinSizeanimateContentSize

您也可以阅读此内置动画修改器