You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Compose中如何降低LazyList的animateScrollToItem滚动速度?

如何减慢LazyColumn animateScrollToItem的滚动速度

首先注意:你当前代码里用的是scrollToItem,这是瞬时无动画滚动,所以加delay(1000)只是延迟执行滚动,不会改变滚动速度——本来就是瞬间跳过去的。如果要实现带慢动画的滚动,得用animateScrollToItem,然后通过自定义动画参数来减慢速度。

解决方法很简单,给animateScrollToItem传一个自定义的scrollAnimationSpec参数:

方法1:用tween指定动画时长

直接设置动画的总时长,数值越大滚动越慢,比如设为2000毫秒(2秒):

coroutineScope.launch {
    listState.animateScrollToItem(
        index = position,
        scrollAnimationSpec = tween(durationMillis = 2000)
    )
}

方法2:用spring实现缓动弹性效果

如果想要更自然的弹性滚动,可通过spring参数调整阻尼和刚度,刚度越低滚动越平缓:

import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring

// ...

coroutineScope.launch {
    listState.animateScrollToItem(
        index = position,
        scrollAnimationSpec = spring(
            dampingRatio = Spring.DampingRatioMediumBouncy,
            stiffness = Spring.StiffnessLow
        )
    )
}

补充:默认的animateScrollToItem用的是时长300ms左右的tween动画,所以你会觉得滚动快,自己调大时长就能明显减慢速度。

内容的提问来源于stack exchange,提问作者user1012861

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:22:07