我正在 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) 检查当前页面是否处于活动状态,但仍然无法解决问题。 谁能帮我弄清楚为什么会发生这种情况以及如何解决它?
使用此行修复了
val pagerState = rememberPagerState(initialPage = 0) {
videoUrls.size
}