mirror of
https://github.com/jellyfin/jellyfin-android.git
synced 2026-09-03 05:10:27 +03:00
Enable edgeToEdge and properly handle insets in exo player
(cherry picked from commit 341676279e)
This commit is contained in:
committed by
Niels van Velzen
parent
e220fb9e93
commit
905a20039f
@@ -11,6 +11,7 @@ import android.view.OrientationEventListener
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
@@ -94,6 +95,7 @@ class MainActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
installSplashScreen()
|
||||
setupKoinFragmentFactory()
|
||||
enableEdgeToEdge()
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_main)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
@@ -153,15 +154,26 @@ class PlayerFragment : Fragment(), BackPressInterceptor {
|
||||
AndroidVersion.isAtLeastR -> insets.getInsetsIgnoringVisibility(WindowInsetsCompat.Type.systemBars())
|
||||
else -> insets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
}
|
||||
playerControlsView.updatePadding(
|
||||
top = systemInsets.top,
|
||||
left = systemInsets.left,
|
||||
right = systemInsets.right,
|
||||
bottom = systemInsets.bottom,
|
||||
)
|
||||
if (playerFullscreenHelper.isFullscreen) {
|
||||
playerView.setPadding(0)
|
||||
playerControlsView.updatePadding(
|
||||
left = systemInsets.left,
|
||||
top = systemInsets.top,
|
||||
right = systemInsets.right,
|
||||
bottom = systemInsets.bottom,
|
||||
)
|
||||
} else {
|
||||
playerView.updatePadding(
|
||||
left = systemInsets.left,
|
||||
top = systemInsets.top,
|
||||
right = systemInsets.right,
|
||||
bottom = systemInsets.bottom,
|
||||
)
|
||||
playerControlsView.setPadding(0) // Padding is handled by PlayerView
|
||||
}
|
||||
playerOverlay.updatePadding(
|
||||
top = systemInsets.top,
|
||||
left = systemInsets.left,
|
||||
top = systemInsets.top,
|
||||
right = systemInsets.right,
|
||||
bottom = systemInsets.bottom,
|
||||
)
|
||||
@@ -175,7 +187,6 @@ class PlayerFragment : Fragment(), BackPressInterceptor {
|
||||
|
||||
insets
|
||||
}
|
||||
ViewCompat.requestApplyInsets(view)
|
||||
|
||||
// Handle toolbar back button
|
||||
toolbar.setNavigationOnClickListener { parentFragmentManager.popBackStack() }
|
||||
|
||||
@@ -28,13 +28,11 @@ class PlayerFullscreenHelper(private val window: Window) {
|
||||
}
|
||||
|
||||
fun enableFullscreen() {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
|
||||
windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||||
}
|
||||
|
||||
fun disableFullscreen() {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, true)
|
||||
windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ import android.widget.Toast
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.doOnNextLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
@@ -128,7 +127,6 @@ class WebViewFragment : Fragment(), BackPressInterceptor, JellyfinWebChromeClien
|
||||
|
||||
// Apply window insets
|
||||
webView.applyWindowInsetsAsMargins()
|
||||
ViewCompat.requestApplyInsets(webView)
|
||||
|
||||
// Setup exclusion rects for gestures
|
||||
if (AndroidVersion.isAtLeastQ) {
|
||||
|
||||
Reference in New Issue
Block a user