diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt index d9ad8876d..9d7dc9a0d 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt @@ -60,7 +60,7 @@ import io.legado.app.utils.gone import io.legado.app.utils.observeEvent import io.legado.app.utils.showDialogFragment import io.legado.app.utils.toastOnUi -import io.legado.app.utils.toggleStatusBar +import io.legado.app.utils.toggleSystemBar import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.visible import kotlinx.coroutines.Dispatchers.IO @@ -539,7 +539,7 @@ class ReadMangaActivity : VMBaseActivity() { private fun toggleFullScreen() { isFullScreen = !isFullScreen - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - // For API 30 and above - val windowInsetsController = window.insetsController - windowInsetsController?.let { - if (isFullScreen) { - it.systemBarsBehavior = - WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - it.hide(WindowInsets.Type.systemBars()) - supportActionBar?.hide() - } else { - it.show(WindowInsets.Type.systemBars()) - supportActionBar?.show() - } - } + toggleSystemBar(!isFullScreen) + + if (isFullScreen) { + supportActionBar?.hide() } else { - // For older APIs - @Suppress("DEPRECATION") - window.decorView.systemUiVisibility = if (isFullScreen) { - (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY - or View.SYSTEM_UI_FLAG_FULLSCREEN - or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) - } else { - View.SYSTEM_UI_FLAG_VISIBLE - } - supportActionBar?.let { if (isFullScreen) it.hide() else it.show() } + supportActionBar?.show() } } @@ -266,7 +244,7 @@ class WebViewActivity : VMBaseActivity() { binding.customWebView.addView(view) customWebViewCallback = callback keepScreenOn(true) - toggleNavigationBar(false) + toggleSystemBar(false) } override fun onHideCustomView() { @@ -274,7 +252,7 @@ class WebViewActivity : VMBaseActivity() { binding.llView.visible() requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED keepScreenOn(false) - toggleNavigationBar(true) + toggleSystemBar(true) } } diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index 23796b9ba..f470a438d 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -61,7 +61,7 @@ import io.legado.app.utils.splitNotBlank import io.legado.app.utils.startActivity import io.legado.app.utils.textArray import io.legado.app.utils.toastOnUi -import io.legado.app.utils.toggleNavigationBar +import io.legado.app.utils.toggleSystemBar import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.visible import kotlinx.coroutines.launch @@ -383,7 +383,7 @@ class ReadRssActivity : VMBaseActivity binding.customWebView.addView(view) customWebViewCallback = callback keepScreenOn(true) - toggleNavigationBar(false) + toggleSystemBar(false) } override fun onHideCustomView() { @@ -391,7 +391,7 @@ class ReadRssActivity : VMBaseActivity binding.llView.visible() requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED keepScreenOn(false) - toggleNavigationBar(true) + toggleSystemBar(true) } } diff --git a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt index b925d237b..bb86e97eb 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt @@ -18,7 +18,6 @@ import androidx.annotation.ColorInt import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat -import androidx.core.view.WindowInsetsControllerCompat.BEHAVIOR_DEFAULT import androidx.core.view.WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE import androidx.fragment.app.DialogFragment import io.legado.app.R @@ -177,25 +176,12 @@ fun Activity.keepScreenOn(on: Boolean) { } } -fun Activity.toggleNavigationBar(show: Boolean) { +fun Activity.toggleSystemBar(show: Boolean) { WindowCompat.getInsetsController(window, window.decorView).run { if (show) { - show(WindowInsetsCompat.Type.navigationBars()) - systemBarsBehavior = BEHAVIOR_DEFAULT + show(WindowInsetsCompat.Type.systemBars()) } else { - hide(WindowInsetsCompat.Type.navigationBars()) - systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - } - } -} - -fun Activity.toggleStatusBar(show: Boolean) { - WindowCompat.getInsetsController(window, window.decorView).run { - if (show) { - show(WindowInsetsCompat.Type.statusBars()) - systemBarsBehavior = BEHAVIOR_DEFAULT - } else { - hide(WindowInsetsCompat.Type.statusBars()) + hide(WindowInsetsCompat.Type.systemBars()) systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } }