如何在 Jetpack Compose 中减慢 AnimateScrollToItem 的速度?

And*_*Dev 12 android android-layout kotlin android-studio android-jetpack-compose

我有一个惰性列表,单击按钮时我将动画滚动到项目。

onClick = {
  scope.launch  {
    lazyListState.animateScrollToItem(selectedIndex)
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么 animateScrollToItem 这么快?我可以放慢一点吗?我没有看到任何地方可以添加animationSpec,并且使用 animateScrollBy() 我需要传递一个浮点而不是索引 - 这是我不想要的。

小智 6

这是目前唯一可行的办法。animateScrollBy()顺便说一下,这并不是那么糟糕,您所需要的只是知道惰性容器项目的大小。

val itemSize = 50.dp
val density = LocalDensity.current
val itemSizePx = with(density) { itemSize.toPx() }
val itemsScrollCount = 150
coroutineScope.launch {
   lazyListState.animateScrollBy(
     value = itemSizePx * itemsScrollCount
     animationSpec = tween(durationMillis = 5000)
   )
}
Run Code Online (Sandbox Code Playgroud)

  • 如何计算物品尺寸是否不同?我认为这使 animateScrollBy 的使用变得更加复杂。Google 应该在 animateScrollToItem() 中公开动画规范。 (5认同)