From 09815ccb125ad6f16f803ae80266f779e3cc5133 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Thu, 11 Jul 2024 16:10:40 +0200 Subject: [PATCH] make it possible to switch to fullscreen --- .../net/newpipe/newplayer/PlayerFragment.kt | 17 ++++++-- .../newplayer/ui/VideoPlayerControllerUI.kt | 8 +++- .../java/net/newpipe/newplayer/ui/utils.kt | 1 + .../main/res/layout-land/player_framgent.xml | 39 +++++++++++++++++++ 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/layout-land/player_framgent.xml diff --git a/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt b/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt index c3670e8..95fa959 100644 --- a/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt +++ b/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt @@ -29,6 +29,9 @@ import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.compose.ui.unit.dp import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -50,10 +53,19 @@ class PlayerFragment() : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { + val window = activity?.window!! + val insetsController = WindowCompat.getInsetsController(window, window.decorView) + insetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + val view = inflater.inflate(R.layout.player_framgent, container, false) val composeView = view.findViewById(R.id.player_copose_view) val frameView = view.findViewById(R.id.frame_layout) + if (viewModel.uiState.value.fullscreen) { + println("gurken fragment created for fullscreen") + insetsController.hide(WindowInsetsCompat.Type.systemBars()) + } + viewModel.listener = object : VideoPlayerViewModel.Listener { override fun requestUpdateLayoutRatio(ratio: Float) { frameView.updateLayoutParams { @@ -62,10 +74,7 @@ class PlayerFragment() : Fragment() { } override fun switchToFullscreen() { - frameView.updateLayoutParams { - - println("gurken fullscreen") - } + println("gurken fullscreen") } } diff --git a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt b/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt index da07439..383c6fd 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt @@ -22,6 +22,7 @@ package net.newpipe.newplayer.ui import android.content.pm.ActivityInfo +import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -121,6 +122,11 @@ fun VideoPlayerControllerUI( ) } } + if (isFullscreen) { + BackHandler { + switchToEmbeddedView() + } + } } /////////////////////////////////////////////////////////////////// @@ -350,7 +356,7 @@ private fun BottomUI( Text("00:06:45") Slider(value = 0.4F, onValueChange = {}, modifier = Modifier.weight(1F)) Text("00:09:40") - IconButton(onClick = if(isFullscreen) switchToEmbeddedView else switchToFullscreen) { + IconButton(onClick = if (isFullscreen) switchToEmbeddedView else switchToFullscreen) { Icon( imageVector = if (isFullscreen) Icons.Filled.FullscreenExit else Icons.Filled.Fullscreen, diff --git a/app/src/main/java/net/newpipe/newplayer/ui/utils.kt b/app/src/main/java/net/newpipe/newplayer/ui/utils.kt index 1259f11..3fb58d4 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/utils.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/utils.kt @@ -26,6 +26,7 @@ import android.content.ContextWrapper import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.platform.LocalContext +import androidx.core.view.WindowCompat @Composable fun LockScreenOrientation(orientation: Int) { diff --git a/app/src/main/res/layout-land/player_framgent.xml b/app/src/main/res/layout-land/player_framgent.xml new file mode 100644 index 0000000..2b3976c --- /dev/null +++ b/app/src/main/res/layout-land/player_framgent.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + \ No newline at end of file