订阅源增加全屏显示

感谢 @niu-hb
Source: https://github.com/gedoor/legado/pull/5373/commits/76ce4b89a65c688e8a6232c4cb247bdbabbf33af
This commit is contained in:
HapeLee committed 2025-08-31 02:58:42 +08:00
1 parent a25bd6a440
commit 4296172cc3
3 files changed
+42 -5

No files matched your search

@@ -22,6 +22,7 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.net.toUri
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.size import androidx.core.view.size
import androidx.lifecycle.lifecycleScope 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.help.http.CookieManager
import io.legato.kazusa.lib.dialogs.SelectItem import io.legato.kazusa.lib.dialogs.SelectItem
import io.legato.kazusa.lib.dialogs.selector 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.model.Download
import io.legato.kazusa.ui.association.OnLineImportActivity import io.legato.kazusa.ui.association.OnLineImportActivity
import io.legato.kazusa.ui.file.HandleFileContract import io.legato.kazusa.ui.file.HandleFileContract
@@ -82,6 +81,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
private var starMenuItem: MenuItem? = null private var starMenuItem: MenuItem? = null
private var ttsMenuItem: MenuItem? = null private var ttsMenuItem: MenuItem? = null
private var isFullScreen = false
private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null
private val selectImageDir = registerForActivityResult(HandleFileContract()) { private val selectImageDir = registerForActivityResult(HandleFileContract()) {
it.uri?.let { uri -> it.uri?.let { uri ->
@@ -105,6 +105,9 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
initLiveData() initLiveData()
viewModel.initData(intent) viewModel.initData(intent)
onBackPressedDispatcher.addCallback(this) { onBackPressedDispatcher.addCallback(this) {
if (isFullScreen) {
toggleFullScreen()
} else {
if (binding.customWebView.size > 0) { if (binding.customWebView.size > 0) {
customWebViewCallback?.onCustomViewHidden() customWebViewCallback?.onCustomViewHidden()
return@addCallback return@addCallback
@@ -117,6 +120,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
finish() finish()
} }
} }
}
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
@SuppressLint("SwitchIntDef") @SuppressLint("SwitchIntDef")
@@ -154,6 +158,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.menu_full_screen -> toggleFullScreen()
R.id.menu_rss_refresh -> viewModel.refresh { R.id.menu_rss_refresh -> viewModel.refresh {
binding.webView.reload() binding.webView.reload()
} }
@@ -207,6 +212,19 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
return AppConfig.isNightTheme return AppConfig.isNightTheme
} }
private fun toggleFullScreen() {
isFullScreen = !isFullScreen
toggleSystemBar(!isFullScreen)
if (isFullScreen) {
supportActionBar?.hide()
toastOnUi("可通过系统手势退出全屏。")
} else {
supportActionBar?.show()
}
}
private fun initView() { private fun initView() {
binding.root.setOnApplyWindowInsetsListenerCompat { view, windowInsets -> binding.root.setOnApplyWindowInsetsListenerCompat { view, windowInsets ->
val typeMask = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime() val typeMask = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime()
@@ -267,7 +285,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
if (path.isNullOrEmpty()) { if (path.isNullOrEmpty()) {
selectSaveFolder(webPic) selectSaveFolder(webPic)
} else { } else {
viewModel.saveImage(webPic, Uri.parse(path)) viewModel.saveImage(webPic, path.toUri())
} }
} }
@@ -402,7 +420,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress") @Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
return shouldOverrideUrlLoading(Uri.parse(url)) return shouldOverrideUrlLoading(url.toUri())
} }
/** /**
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M120,840L120,640L200,640L200,760L320,760L320,840L120,840ZM640,840L640,760L760,760L760,640L840,640L840,840L640,840ZM120,320L120,120L320,120L320,200L200,200L200,320L120,320ZM760,320L760,200L640,200L640,120L840,120L840,320L760,320Z" />
</vector>
+9 -1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item <item
android:id="@+id/menu_rss_refresh" android:id="@+id/menu_rss_refresh"
android:title="@string/refresh" android:title="@string/refresh"
@@ -13,6 +14,13 @@
android:icon="@drawable/ic_star" android:icon="@drawable/ic_star"
app:showAsAction="always" /> app:showAsAction="always" />
<item
android:id="@+id/menu_full_screen"
android:icon="@drawable/ic_fullscreen"
android:title="@string/full_screen"
app:showAsAction="always"
tools:ignore="AlwaysShowAction" />
<item <item
android:id="@+id/menu_share_it" android:id="@+id/menu_share_it"
android:title="@string/share" android:title="@string/share"