diff --git a/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt b/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt index e458a5c..63b2eb6 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/ui/VideoPlayerControllerUI.kt @@ -32,13 +32,16 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.displayCutout import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.systemGestures import androidx.compose.foundation.layout.union +import androidx.compose.foundation.layout.waterfall import androidx.compose.foundation.layout.windowInsetsBottomHeight import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsTopHeight @@ -105,10 +108,15 @@ fun VideoPlayerControllerUI( hideUi: () -> Unit ) { - val insets = WindowInsets.systemBars + val insets = + WindowInsets.systemBars + .union(WindowInsets.displayCutout) + .union(WindowInsets.waterfall) if (!uiVissible) { TouchUi( - modifier = Modifier.fillMaxSize(), + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.systemGestures), hideUi = hideUi, showUi = showUi, uiVissible = uiVissible, @@ -119,22 +127,28 @@ fun VideoPlayerControllerUI( modifier = Modifier.fillMaxSize(), color = Color(0x75000000) ) { TouchUi( - modifier = Modifier.fillMaxSize(), + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.systemGestures), hideUi = hideUi, showUi = showUi, uiVissible = uiVissible, fullscreen = fullscreen ) + Box { + CenterUI( + modifier = Modifier.align(Alignment.Center), + isPlaying = isPlaying, + play = play, + pause = pause, + prevStream = prevStream, + nextStream = nextStream + ) + } + Box( - modifier = if (fullscreen) { - Modifier - .background(Color.Transparent) - .windowInsetsPadding(insets) - } else { - Modifier - .background(Color.Transparent) - } + modifier = if (fullscreen) Modifier.windowInsetsPadding(insets) else Modifier ) { TopUI( modifier = Modifier @@ -143,14 +157,7 @@ fun VideoPlayerControllerUI( .defaultMinSize(minHeight = 45.dp) .padding(top = 4.dp, start = 16.dp, end = 16.dp) ) - CenterUI( - modifier = Modifier.align(Alignment.Center), - isPlaying, - play = play, - pause = pause, - prevStream = prevStream, - nextStream = nextStream - ) + BottomUI( modifier = Modifier .align(Alignment.BottomStart) diff --git a/test-app/src/main/java/net/newpipe/newplayer/testapp/MainActivity.kt b/test-app/src/main/java/net/newpipe/newplayer/testapp/MainActivity.kt index bc15418..ac4c417 100644 --- a/test-app/src/main/java/net/newpipe/newplayer/testapp/MainActivity.kt +++ b/test-app/src/main/java/net/newpipe/newplayer/testapp/MainActivity.kt @@ -66,7 +66,7 @@ class MainActivity : AppCompatActivity() { videoPlayerViewModel.newPlayer = newPlayer - videoPlayerViewModel.maxContentRatio = 4F/3F + //videoPlayerViewModel.maxContentRatio = 4F/3F videoPlayerViewModel.contentFitMode = ContentScale.FIT_INSIDE @@ -76,16 +76,16 @@ class MainActivity : AppCompatActivity() { val setupFullscreen = { - //ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> - // v.setPadding(0, 0, 0, 0) - // insets - //} + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> + v.setPadding(0, 0, 0, 0) + insets + } buttons_layout.visibility = View.GONE embedded_player_layout.visibility = View.GONE fullscreen_player.visibility = View.VISIBLE fullscreen_player.viewModel = videoPlayerViewModel - //windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) } val setupEmbeddedView = { @@ -108,7 +108,7 @@ class MainActivity : AppCompatActivity() { video_view.viewModel = videoPlayerViewModel - //windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) + windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) } if (videoPlayerViewModel.uiState.value.fullscreen) { @@ -127,9 +127,9 @@ class MainActivity : AppCompatActivity() { override fun onUiVissibleToggle(isVissible: Boolean) { if (isVissible) { - // windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) + windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) } else { - // windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) } } }