Horis 1 rok temu
rodzic
commit
9f0a6432b1

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

+ 8 - 30
app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt

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

+ 3 - 3
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<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)
         }
     }
 

+ 3 - 17
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
         }
     }