This commit is contained in:
Horis
2025-01-07 12:16:52 +08:00
parent 7b130dd1dc
commit 3710e917b2
3 changed files with 22 additions and 0 deletions
@@ -43,6 +43,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.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import java.net.URLDecoder
@@ -239,6 +240,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.customWebView.addView(view)
customWebViewCallback = callback
keepScreenOn(true)
toggleNavigationBar(false)
}
override fun onHideCustomView() {
@@ -246,6 +248,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false)
toggleNavigationBar(true)
}
}
@@ -60,6 +60,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.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import kotlinx.coroutines.launch
@@ -380,6 +381,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
binding.customWebView.addView(view)
customWebViewCallback = callback
keepScreenOn(true)
toggleNavigationBar(false)
}
override fun onHideCustomView() {
@@ -387,6 +389,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
binding.llView.visible()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
keepScreenOn(false)
toggleNavigationBar(true)
}
}
@@ -16,6 +16,10 @@ import android.view.WindowMetrics
import android.widget.FrameLayout
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
import io.legado.app.ui.widget.dialog.TextDialog
@@ -173,6 +177,18 @@ fun Activity.keepScreenOn(on: Boolean) {
}
}
fun Activity.toggleNavigationBar(show: Boolean) {
WindowCompat.getInsetsController(window, window.decorView).run {
if (show) {
show(WindowInsetsCompat.Type.navigationBars())
systemBarsBehavior = BEHAVIOR_DEFAULT
} else {
hide(WindowInsetsCompat.Type.navigationBars())
systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
}
}
/////以下方法需要在View完全被绘制出来之后调用,否则判断不了,在比如 onWindowFocusChanged()方法中可以得到正确的结果/////
/**