Вот видео о проблеме, с которой я столкнулся.
Я создал составной видеоплеер, используя этот код:
Код: Выделить всё
@OptIn(UnstableApi::class)
@Composable
fun VideoPlayer(
modifier: Modifier = Modifier,
file: File,
) {
val context = LocalContext.current
val exoPlayer = remember { ExoPlayer.Builder(context).build() }
// Get the video URI from internal storage
val correctedFile = file.takeIf { it.name.endsWith(".mp4") } ?: File(file.parent, "${file.name}.mp4")
val videoUri = Uri.fromFile(correctedFile)
// Set the media source
val mediaItem = MediaItem.Builder()
.setUri(videoUri)
.setMimeType(MimeTypes.VIDEO_MP4) // Specify the correct MIME type
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
exoPlayer.playWhenReady = true
// Add a listener to log errors
exoPlayer.addListener(object : Player.Listener {
override fun onPlayerError(error: PlaybackException) {
Timber.e("VideoPlayer", "Player error: ${error.message}")
}
})
// Use AndroidView to integrate ExoPlayer's PlayerView
AndroidView(
modifier = modifier
.clipToBounds(),
factory = { ctx ->
PlayerView(ctx).apply {
player = exoPlayer
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
}
})
// Clean up the ExoPlayer when the composable is disposed
DisposableEffect(Unit) {
onDispose {
exoPlayer.release()
}
}
}
В настоящее время я использую столбец с вертикальной прокруткой для заполнения содержимого нижнего листа. Я также пробовал использовать LazyColumn, но возникла та же проблема.
Кто-нибудь знает, что может быть причиной такого поведения с PlayerView? Как я могу решить эту проблему и обеспечить, чтобы видеопроигрыватель правильно оставался на нижнем листе во время прокрутки?
Подробнее здесь: https://stackoverflow.com/questions/789 ... -scrolling
Мобильная версия