Jetpack Compose 中的VerticalPager 在页面之间不断滚动而不停止

问题描述 投票:0回答:1

我正在 Jetpack Compose 中使用 VerticalPager 构建垂直视频源来显示视频 URL 列表。我希望每个视频仅在相应页面可见时播放。但是,我面临一个问题,即寻呼机不断滚动而不停止,并且滚动后重置回第 0 页。

这是我用来实现 VerticalPager 的代码:

package com.ae.portraitvideoplayer

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.pager.VerticalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun VerticalVideoFeedScreen() {
    val videoUrls = listOf(
        "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4",
        "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
        "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
    )

    // Initialize the PagerState
    val pagerState = rememberPagerState(
        initialPage = 0, // Start from the first video
        pageCount = { videoUrls.size } // Dynamic page count based on video list size
    )

    // Use VerticalPager
    Box {
        VerticalPager(
            state = pagerState,
            modifier = Modifier.fillMaxSize()
        ) { page ->
            // Access the video URL at the current page
            val videoUrl = videoUrls[page]

            // Determine if the current page is active
            val isCurrentPage = pagerState.currentPage == page

            // Display the video player for the current page
            PortraitVideoPlayer(
                videoUrl = videoUrl,
                shouldPlay = isCurrentPage
            )
        }
    }
}

问题:

VerticalPager 不断滚动,到达最后一页后不会停止。 滚动后,即使我在最后一页,它也会重置为第 0 页。 我希望寻呼机停止滚动,仅在用户滚动时移动到下一页。此外,我希望每个视频仅在相应页面处于活动状态时播放。

我尝试过的:

我使用 VerticalPager 和基于 videoUrls 列表大小的动态 pageCount。 我使用 shouldPlay 标志 (isCurrentPage) 检查当前页面是否处于活动状态,但仍然无法解决问题。 谁能帮我弄清楚为什么会发生这种情况以及如何解决它?

android kotlin android-jetpack-compose
1个回答
0
投票

使用此行修复了

val pagerState = rememberPagerState(initialPage = 0) {
    videoUrls.size 
}
© www.soinside.com 2019 - 2024. All rights reserved.