animateScrollToPage,在"伴奏寻呼机"中使用慢速滑动动画



在伴奏寻呼机中自动滚动到下一页时,有没有办法降低滑动间隔?

在最新版本中,已删除对相同功能的支持。

The animationSpec, initialVelocity and skipPages parameters on animateScrollToPage() have been removed. The lazy components handle this automatically.

目前,自动滚动到下一页的速度非常快。

pager.animateScrollToPage(pageIndex)

使用的伴奏寻呼机版本:0.22.1-rc

可以在这里找到答案。

这将为Card组件设置动画,这些组件在循环中自动向前滚动,然后返回到起始位置。

状态

val pagerState = rememberPagerState()
val isDragged by pagerState.interactionSource.collectIsDraggedAsState()
var pageSize by remember { mutableStateOf(IntSize.Zero) }
val lastIndex by remember(pagerState.currentPage) {
derivedStateOf {pagerState.currentPage == items.size - 1 }
}

滚动

if (!isDragged) {
LaunchedEffect(Unit) {
while (true) {
yield()
delay(2000)
pagerState.animateScrollBy(
value = if (lastIndex) - (pageSize.width.toFloat() * items.size) else pageSize.width.toFloat(),
animationSpec = tween(if (lastIndex) 2000 else 1400)
)
}
}
}

pageSizeCard上分配有onSizeChangedModifier

HorizontalPager(
count = items.size,
state = pagerState
) { pageIndex ->
Card(modifier = modifier.onSizeChanged { pageSize = it } ) { /* card content */ }
}

最新更新