我有一个10个项目的列表,其中一个有这个元素"rankingCurrentPlace"
,"rankingPastPlace"
和"isUser:true"
。
如果API响应像这样,我需要在lazycolumn上做一个动画"isUser:true"
,"rankingPastPlace:3"
,"rankingCurrentPlace:7"
我需要显示一个动画在列表中的行开始在第三位和下降到第七位
有没有办法做到这一点?
这是我真正拥有的
LazyColumn(
contentPadding = PaddingValues(horizontal = 10.dp, vertical = 0.dp),
) {
items(
items = leaderboard,
key = { leaderBoard ->
leaderBoard.rankingPlace
}
) { leaderBoard ->
RowComposable( modifier = Modifier
.fillMaxWidth(),
topicsItem = leaderBoard,)
}
字符串
2条答案
按热度按时间xkftehaa1#
这个答案是有效的,除了当交换第一个项目与任何项目,即使没有动画的基本交换功能。我认为这将是更好地问一个新的问题,为什么交换第一个项目不工作,或者如果它是错误的。除此之外,工程预期。如果你需要移动到项目不在屏幕上,你可以
lazyListState.layoutInfo.visibleItemsInfo
和比较初始项目和滚动到它之前,动画1.有一个SnapshotStateList的数据触发重组时,我们交换2个项目
字符串
2.函数来交换项
型
3.一个接一个交换项目的函数。交换第一个项目有一个错误。即使它与上面的函数一起使用,当交换第一个项目时,其他项目也会向上移动,而不会通过
Modififer.animateItemPlacement()
显示动画。型
4.包含
Modifier.animateItemPlacement()
的项目的列表型
演示
型
编辑:使用Animatable制作动画
另一种制作动画的方法是使用
Animatable
和Animatable
矢量。型
并且可以用作
型
在按钮点击,我得到的值从文本字段我转换从字符串
型
结果
的数据
34gzjxbg2#
我建议你从一个数据类中获取你的项目。如果你的其他项目不包含你提到的变量,你可以在数据类中使它们为空,并在你的lazycolumn中放置一个条件检查器
这样
字符串
然后可以从这个数据类中制作一个列表,并将其传递给LazyColumn
型