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
相关产品推荐
相关产品推荐

