订阅源增加全屏显示
感谢 @niu-hb Source: https://github.com/gedoor/legado/pull/5373/commits/76ce4b89a65c688e8a6232c4cb247bdbabbf33af
This commit is contained in:
3 files changed
+51
-14
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,16 +105,20 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|||||||
initLiveData()
|
initLiveData()
|
||||||
viewModel.initData(intent)
|
viewModel.initData(intent)
|
||||||
onBackPressedDispatcher.addCallback(this) {
|
onBackPressedDispatcher.addCallback(this) {
|
||||||
if (binding.customWebView.size > 0) {
|
if (isFullScreen) {
|
||||||
customWebViewCallback?.onCustomViewHidden()
|
toggleFullScreen()
|
||||||
return@addCallback
|
} else {
|
||||||
} else if (binding.webView.canGoBack()
|
if (binding.customWebView.size > 0) {
|
||||||
&& binding.webView.copyBackForwardList().size > 1
|
customWebViewCallback?.onCustomViewHidden()
|
||||||
) {
|
return@addCallback
|
||||||
binding.webView.goBack()
|
} else if (binding.webView.canGoBack()
|
||||||
return@addCallback
|
&& binding.webView.copyBackForwardList().size > 1
|
||||||
|
) {
|
||||||
|
binding.webView.goBack()
|
||||||
|
return@addCallback
|
||||||
|
}
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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>
|
||||||
@@ -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"
|
||||||
|
|||||||
Reference in new issue
Block a user