优化
Some checks are pending
Test Build / prepare (push) Waiting to run
Test Build / build (app, release) (push) Blocked by required conditions
Test Build / build (app, releaseA) (push) Blocked by required conditions
Test Build / prerelease (push) Blocked by required conditions
Test Build / lanzou (push) Blocked by required conditions
Test Build / test_Branch (push) Blocked by required conditions
Test Build / telegram (push) Blocked by required conditions

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

View File

@@ -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<ActivityMangaBinding, ReadMangaViewMode
}
override fun upSystemUiVisibility(menuIsVisible: Boolean) {
toggleStatusBar(menuIsVisible)
toggleSystemBar(menuIsVisible)
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {

View File

@@ -4,13 +4,10 @@ import android.annotation.SuppressLint
import android.content.pm.ActivityInfo
import android.net.Uri
import android.net.http.SslError
import android.os.Build
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import android.webkit.CookieManager
import android.webkit.SslErrorHandler
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.setDarkeningAllowed
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.visible
import java.net.URLDecoder
@@ -151,31 +148,12 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
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<ActivityWebViewBinding, WebViewModel>() {
binding.customWebView.addView(view)
customWebViewCallback = callback
keepScreenOn(true)
toggleNavigationBar(false)
toggleSystemBar(false)
}
override fun onHideCustomView() {
@@ -274,7 +252,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false)
toggleNavigationBar(true)
toggleSystemBar(true)
}
}

View File

@@ -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<ActivityRssReadBinding, ReadRssViewModel>
binding.customWebView.addView(view)
customWebViewCallback = callback
keepScreenOn(true)
toggleNavigationBar(false)
toggleSystemBar(false)
}
override fun onHideCustomView() {
@@ -391,7 +391,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false)
toggleNavigationBar(true)
toggleSystemBar(true)
}
}

View File

@@ -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
}
}