This commit is contained in:
Horis
2025-03-09 16:35:16 +08:00
parent 698efc29c8
commit e62d5b926a
4 changed files with 16 additions and 52 deletions
@@ -60,7 +60,7 @@ import io.legado.app.utils.gone
import io.legado.app.utils.observeEvent import io.legado.app.utils.observeEvent
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.toastOnUi 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.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible import io.legado.app.utils.visible
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
@@ -539,7 +539,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
} }
override fun upSystemUiVisibility(menuIsVisible: Boolean) { override fun upSystemUiVisibility(menuIsVisible: Boolean) {
toggleStatusBar(menuIsVisible) toggleSystemBar(menuIsVisible)
} }
override fun dispatchKeyEvent(event: KeyEvent): Boolean { override fun dispatchKeyEvent(event: KeyEvent): Boolean {
@@ -4,13 +4,10 @@ import android.annotation.SuppressLint
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.net.Uri import android.net.Uri
import android.net.http.SslError import android.net.http.SslError
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import android.webkit.CookieManager import android.webkit.CookieManager
import android.webkit.SslErrorHandler import android.webkit.SslErrorHandler
import android.webkit.URLUtil import android.webkit.URLUtil
@@ -44,7 +41,7 @@ import io.legado.app.utils.openUrl
import io.legado.app.utils.sendToClip import io.legado.app.utils.sendToClip
import io.legado.app.utils.setDarkeningAllowed import io.legado.app.utils.setDarkeningAllowed
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.toggleNavigationBar import io.legado.app.utils.toggleSystemBar
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible import io.legado.app.utils.visible
import java.net.URLDecoder import java.net.URLDecoder
@@ -151,31 +148,12 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
private fun toggleFullScreen() { private fun toggleFullScreen() {
isFullScreen = !isFullScreen isFullScreen = !isFullScreen
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { toggleSystemBar(!isFullScreen)
// For API 30 and above
val windowInsetsController = window.insetsController if (isFullScreen) {
windowInsetsController?.let { supportActionBar?.hide()
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()
}
}
} else { } else {
// For older APIs supportActionBar?.show()
@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() }
} }
} }
@@ -266,7 +244,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.customWebView.addView(view) binding.customWebView.addView(view)
customWebViewCallback = callback customWebViewCallback = callback
keepScreenOn(true) keepScreenOn(true)
toggleNavigationBar(false) toggleSystemBar(false)
} }
override fun onHideCustomView() { override fun onHideCustomView() {
@@ -274,7 +252,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.llView.visible() binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false) keepScreenOn(false)
toggleNavigationBar(true) toggleSystemBar(true)
} }
} }
@@ -61,7 +61,7 @@ import io.legado.app.utils.splitNotBlank
import io.legado.app.utils.startActivity import io.legado.app.utils.startActivity
import io.legado.app.utils.textArray import io.legado.app.utils.textArray
import io.legado.app.utils.toastOnUi 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.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible import io.legado.app.utils.visible
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -383,7 +383,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
binding.customWebView.addView(view) binding.customWebView.addView(view)
customWebViewCallback = callback customWebViewCallback = callback
keepScreenOn(true) keepScreenOn(true)
toggleNavigationBar(false) toggleSystemBar(false)
} }
override fun onHideCustomView() { override fun onHideCustomView() {
@@ -391,7 +391,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
binding.llView.visible() binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false) keepScreenOn(false)
toggleNavigationBar(true) toggleSystemBar(true)
} }
} }
@@ -18,7 +18,6 @@ import androidx.annotation.ColorInt
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat 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.core.view.WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import io.legado.app.R 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 { WindowCompat.getInsetsController(window, window.decorView).run {
if (show) { if (show) {
show(WindowInsetsCompat.Type.navigationBars()) show(WindowInsetsCompat.Type.systemBars())
systemBarsBehavior = BEHAVIOR_DEFAULT
} else { } else {
hide(WindowInsetsCompat.Type.navigationBars()) hide(WindowInsetsCompat.Type.systemBars())
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())
systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
} }
} }