优化
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user