优化
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user