From 7b130dd1dc15bc150d54f0b12cea2965f5d04ba7 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Mon, 6 Jan 2025 22:40:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/browser/WebViewActivity.kt | 3 +++ .../java/io/legado/app/ui/rss/read/ReadRssActivity.kt | 3 +++ .../java/io/legado/app/utils/ActivityExtensions.kt | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt index f4fa99de3..67f712a36 100644 --- a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt +++ b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt @@ -37,6 +37,7 @@ import io.legado.app.ui.file.HandleFileContract import io.legado.app.utils.ACache import io.legado.app.utils.gone import io.legado.app.utils.invisible +import io.legado.app.utils.keepScreenOn import io.legado.app.utils.longSnackbar import io.legado.app.utils.openUrl import io.legado.app.utils.sendToClip @@ -237,12 +238,14 @@ class WebViewActivity : VMBaseActivity() { binding.llView.invisible() binding.customWebView.addView(view) customWebViewCallback = callback + keepScreenOn(true) } override fun onHideCustomView() { binding.customWebView.removeAllViews() binding.llView.visible() requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED + keepScreenOn(false) } } diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index 76a7ebb74..8748ca7c4 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -49,6 +49,7 @@ import io.legado.app.utils.get import io.legado.app.utils.gone import io.legado.app.utils.invisible import io.legado.app.utils.isTrue +import io.legado.app.utils.keepScreenOn import io.legado.app.utils.longSnackbar import io.legado.app.utils.openUrl import io.legado.app.utils.setDarkeningAllowed @@ -378,12 +379,14 @@ class ReadRssActivity : VMBaseActivity binding.llView.invisible() binding.customWebView.addView(view) customWebViewCallback = callback + keepScreenOn(true) } override fun onHideCustomView() { binding.customWebView.removeAllViews() binding.llView.visible() requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED + keepScreenOn(false) } } diff --git a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt index 412b92416..60eaecd1d 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt @@ -162,6 +162,17 @@ fun Activity.setNavigationBarColorAuto(@ColorInt color: Int) { } } +fun Activity.keepScreenOn(on: Boolean) { + val isScreenOn = + (window.attributes.flags and WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0 + if (on == isScreenOn) return + if (on) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } +} + /////以下方法需要在View完全被绘制出来之后调用,否则判断不了,在比如 onWindowFocusChanged()方法中可以得到正确的结果///// /**