This commit is contained in:
Horis
2024-12-06 14:40:13 +08:00
parent 3130132f72
commit 4d9a8c57d8
2 changed files with 27 additions and 9 deletions
@@ -11,7 +11,14 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.WindowInsets import android.view.WindowInsets
import android.view.WindowInsetsController import android.view.WindowInsetsController
import android.webkit.* import android.webkit.CookieManager
import android.webkit.SslErrorHandler
import android.webkit.URLUtil
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.view.size import androidx.core.view.size
@@ -27,8 +34,16 @@ import io.legado.app.lib.theme.accentColor
import io.legado.app.model.Download import io.legado.app.model.Download
import io.legado.app.ui.association.OnLineImportActivity import io.legado.app.ui.association.OnLineImportActivity
import io.legado.app.ui.file.HandleFileContract import io.legado.app.ui.file.HandleFileContract
import io.legado.app.utils.* import io.legado.app.utils.ACache
import io.legado.app.utils.gone
import io.legado.app.utils.invisible
import io.legado.app.utils.longSnackbar
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.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import java.net.URLDecoder import java.net.URLDecoder
class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() { class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
@@ -39,6 +54,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null
private var webPic: String? = null private var webPic: String? = null
private var isCloudflareChallenge = false private var isCloudflareChallenge = false
private var isFullScreen = false
private val saveImage = registerForActivityResult(HandleFileContract()) { private val saveImage = registerForActivityResult(HandleFileContract()) {
it.uri?.let { uri -> it.uri?.let { uri ->
ACache.get().put(imagePathKey, uri.toString()) ACache.get().put(imagePathKey, uri.toString())
@@ -70,6 +86,10 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
binding.webView.goBack() binding.webView.goBack()
return@addCallback return@addCallback
} }
if (isFullScreen) {
toggleFullScreen()
return@addCallback
}
finish() finish()
} }
} }
@@ -92,24 +112,23 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
finish() finish()
} }
} }
R.id.menu_full_screen -> toggleFullScreen(item)
R.id.menu_full_screen -> toggleFullScreen()
} }
return super.onCompatOptionsItemSelected(item) return super.onCompatOptionsItemSelected(item)
} }
private var isFullScreen = false
//实现starBrowser调起页面全屏 //实现starBrowser调起页面全屏
private fun toggleFullScreen(item: MenuItem) { private fun toggleFullScreen() {
isFullScreen = !isFullScreen isFullScreen = !isFullScreen
item.title = if (isFullScreen) "Exit full screen" else "Full screen"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// For API 30 and above // For API 30 and above
val windowInsetsController = window.insetsController val windowInsetsController = window.insetsController
windowInsetsController?.let { windowInsetsController?.let {
if (isFullScreen) { if (isFullScreen) {
it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE it.systemBarsBehavior =
WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
it.hide(WindowInsets.Type.systemBars()) it.hide(WindowInsets.Type.systemBars())
supportActionBar?.hide() supportActionBar?.hide()
} else { } else {
-1
View File
@@ -1175,5 +1175,4 @@
<string name="read_aloud_read_phone_state_permission_rationale">阅读需要读取手机状态实现来电期间暂停朗读功能</string> <string name="read_aloud_read_phone_state_permission_rationale">阅读需要读取手机状态实现来电期间暂停朗读功能</string>
<string name="read_aloud_by_media_button_title">耳机按键启动朗读</string> <string name="read_aloud_by_media_button_title">耳机按键启动朗读</string>
<string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string> <string name="read_aloud_by_media_button_summary">通过耳机按键来启动朗读</string>
<string name="fullscreen" translatable="false">全屏</string>
</resources> </resources>