From 4296172cc38098f6078248978e383b0a67328daf Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sun, 31 Aug 2025 02:58:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E9=98=85=E6=BA=90=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=A8=E5=B1=8F=E6=98=BE=E7=A4=BA=20=E6=84=9F=E8=B0=A2=20@ni?= =?UTF-8?q?u-hb=20Source:=20https://github.com/gedoor/legado/pull/5373/com?= =?UTF-8?q?mits/76ce4b89a65c688e8a6232c4cb247bdbabbf33af?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kazusa/ui/rss/read/ReadRssActivity.kt | 44 +++++++++++++------ app/src/main/res/drawable/ic_fullscreen.xml | 11 +++++ app/src/main/res/menu/rss_read.xml | 10 ++++- 3 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/drawable/ic_fullscreen.xml diff --git a/app/src/main/java/io/legato/kazusa/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legato/kazusa/ui/rss/read/ReadRssActivity.kt index 79d961f2c..d5a91711e 100644 --- a/app/src/main/java/io/legato/kazusa/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/rss/read/ReadRssActivity.kt @@ -22,6 +22,7 @@ import android.webkit.WebView import android.webkit.WebViewClient import androidx.activity.addCallback import androidx.activity.viewModels +import androidx.core.net.toUri import androidx.core.view.WindowInsetsCompat import androidx.core.view.size import androidx.lifecycle.lifecycleScope @@ -37,8 +38,6 @@ import io.legato.kazusa.help.config.AppConfig import io.legato.kazusa.help.http.CookieManager import io.legato.kazusa.lib.dialogs.SelectItem import io.legato.kazusa.lib.dialogs.selector -//import io.legado.app.lib.theme.accentColor -//import io.legado.app.lib.theme.primaryTextColor import io.legato.kazusa.model.Download import io.legato.kazusa.ui.association.OnLineImportActivity import io.legato.kazusa.ui.file.HandleFileContract @@ -82,6 +81,7 @@ class ReadRssActivity : VMBaseActivity private var starMenuItem: MenuItem? = null private var ttsMenuItem: MenuItem? = null + private var isFullScreen = false private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null private val selectImageDir = registerForActivityResult(HandleFileContract()) { it.uri?.let { uri -> @@ -105,16 +105,20 @@ class ReadRssActivity : VMBaseActivity initLiveData() viewModel.initData(intent) onBackPressedDispatcher.addCallback(this) { - if (binding.customWebView.size > 0) { - customWebViewCallback?.onCustomViewHidden() - return@addCallback - } else if (binding.webView.canGoBack() - && binding.webView.copyBackForwardList().size > 1 - ) { - binding.webView.goBack() - return@addCallback + if (isFullScreen) { + toggleFullScreen() + } else { + if (binding.customWebView.size > 0) { + customWebViewCallback?.onCustomViewHidden() + return@addCallback + } else if (binding.webView.canGoBack() + && binding.webView.copyBackForwardList().size > 1 + ) { + binding.webView.goBack() + return@addCallback + } + finish() } - finish() } } @@ -154,6 +158,7 @@ class ReadRssActivity : VMBaseActivity override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { + R.id.menu_full_screen -> toggleFullScreen() R.id.menu_rss_refresh -> viewModel.refresh { binding.webView.reload() } @@ -207,6 +212,19 @@ class ReadRssActivity : VMBaseActivity return AppConfig.isNightTheme } + private fun toggleFullScreen() { + isFullScreen = !isFullScreen + + toggleSystemBar(!isFullScreen) + + if (isFullScreen) { + supportActionBar?.hide() + toastOnUi("可通过系统手势退出全屏。") + } else { + supportActionBar?.show() + } + } + private fun initView() { binding.root.setOnApplyWindowInsetsListenerCompat { view, windowInsets -> val typeMask = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime() @@ -267,7 +285,7 @@ class ReadRssActivity : VMBaseActivity if (path.isNullOrEmpty()) { selectSaveFolder(webPic) } else { - viewModel.saveImage(webPic, Uri.parse(path)) + viewModel.saveImage(webPic, path.toUri()) } } @@ -402,7 +420,7 @@ class ReadRssActivity : VMBaseActivity @Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress") override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { - return shouldOverrideUrlLoading(Uri.parse(url)) + return shouldOverrideUrlLoading(url.toUri()) } /** diff --git a/app/src/main/res/drawable/ic_fullscreen.xml b/app/src/main/res/drawable/ic_fullscreen.xml new file mode 100644 index 000000000..4cde88413 --- /dev/null +++ b/app/src/main/res/drawable/ic_fullscreen.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/rss_read.xml b/app/src/main/res/menu/rss_read.xml index 5fb847af4..438081da2 100644 --- a/app/src/main/res/menu/rss_read.xml +++ b/app/src/main/res/menu/rss_read.xml @@ -1,6 +1,7 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + +