animateScrollToPage 在伴奏寻呼机中带有缓慢滑动动画

Ali*_*ris 5 android-jetpack-compose jetpack-compose-accompanist

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

在最新版本中,对此的支持已被删除。

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

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

pager.animateScrollToPage(pageIndex)
Run Code Online (Sandbox Code Playgroud)

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

SVP*_*SVP 1

可以在这里找到答案。

这会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 }
    }
Run Code Online (Sandbox Code Playgroud)

滚动

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)
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

pageSize被指定onSizeChanged ModifierCard

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