This commit is contained in:
Christian Schabesberger 2024-07-22 20:59:48 +02:00
parent 5ee7398f64
commit 3903e89781
1 changed files with 53 additions and 29 deletions

View File

@ -104,27 +104,47 @@ fun VideoPlayerUI(
Surface( Surface(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.aspectRatio(uiState.uiRatio), .aspectRatio(uiState.uiRatio), color = Color.Black
color = Color.Black
) { ) {
Box(contentAlignment = Alignment.Center){ Box(contentAlignment = Alignment.Center) {
AndroidView( val viewBoxModifier = Modifier
modifier = Modifier.also { modifier ->
when (uiState.contentFitMode) { when (uiState.contentFitMode) {
ContentFitMode.FILL -> modifier.fillMaxSize() ContentFitMode.FILL -> {
ContentFitMode.FIT_INSIDE -> if (uiState.contentRatio < uiState.uiRatio) { println("fit mode fill")
modifier.fillMaxHeight().aspectRatio(uiState.contentRatio) viewBoxModifier.fillMaxSize()
}
ContentFitMode.FIT_INSIDE -> {
println("fit mode fit inside:")
if (uiState.contentRatio < uiState.uiRatio) {
println("fit mode fill max height")
viewBoxModifier
.fillMaxHeight()
.aspectRatio(uiState.contentRatio)
} else if (uiState.uiRatio < uiState.contentRatio) { } else if (uiState.uiRatio < uiState.contentRatio) {
modifier.fillMaxWidth().aspectRatio(uiState.contentRatio) println("fit mode fill max width")
viewBoxModifier
.fillMaxWidth()
.aspectRatio(uiState.contentRatio)
} }
ContentFitMode.ZOOM -> if(uiState.uiRatio < uiState.contentRatio) { }
modifier.fillMaxHeight().aspectRatio(uiState.contentRatio)
ContentFitMode.ZOOM -> {
println("fit mode zoom:")
if (uiState.uiRatio < uiState.contentRatio) {
viewBoxModifier
.fillMaxHeight()
.aspectRatio(uiState.contentRatio)
} else if (uiState.contentRatio < uiState.uiRatio) { } else if (uiState.contentRatio < uiState.uiRatio) {
modifier.fillMaxWidth().aspectRatio(uiState.contentRatio) viewBoxModifier
.fillMaxWidth()
.aspectRatio(uiState.contentRatio)
} }
} }
}, }
factory = { context ->
Box(modifier = viewBoxModifier) {
AndroidView(factory = { context ->
SurfaceView(context).also { view -> SurfaceView(context).also { view ->
viewModel.player?.setVideoSurfaceView(view) viewModel.player?.setVideoSurfaceView(view)
} }
@ -137,7 +157,11 @@ fun VideoPlayerUI(
else -> Unit else -> Unit
} }
}) })
Surface(color = Color.Green, modifier = Modifier.fillMaxSize()) {
}
}
}
VideoPlayerControllerUI( VideoPlayerControllerUI(
isPlaying = uiState.playing, isPlaying = uiState.playing,
fullscreen = uiState.fullscreen, fullscreen = uiState.fullscreen,
@ -150,9 +174,9 @@ fun VideoPlayerUI(
) )
} }
} }
}
} }
@Preview(device = "spec:width=1080px,height=700px,dpi=440,orientation=landscape") @Preview(device = "spec:width=1080px,height=700px,dpi=440,orientation=landscape")
@Composable @Composable
fun PlayerUIPreviewEmbeded() { fun PlayerUIPreviewEmbeded() {