优化
This commit is contained in:
@@ -11,8 +11,6 @@ import android.view.View
|
|||||||
import android.webkit.*
|
import android.webkit.*
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.view.size
|
import androidx.core.view.size
|
||||||
import androidx.webkit.WebSettingsCompat
|
|
||||||
import androidx.webkit.WebViewFeature
|
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.constant.AppConst
|
import io.legado.app.constant.AppConst
|
||||||
@@ -87,6 +85,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
binding.webView.webChromeClient = CustomWebChromeClient()
|
binding.webView.webChromeClient = CustomWebChromeClient()
|
||||||
binding.webView.webViewClient = CustomWebViewClient()
|
binding.webView.webViewClient = CustomWebViewClient()
|
||||||
binding.webView.settings.apply {
|
binding.webView.settings.apply {
|
||||||
|
setDarkeningAllowed(AppConfig.isNightTheme)
|
||||||
mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
|
mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
|
||||||
domStorageEnabled = true
|
domStorageEnabled = true
|
||||||
allowContentAccess = true
|
allowContentAccess = true
|
||||||
@@ -100,7 +99,6 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
val cookieManager = CookieManager.getInstance()
|
val cookieManager = CookieManager.getInstance()
|
||||||
cookieManager.setCookie(url, CookieStore.getCookie(url))
|
cookieManager.setCookie(url, CookieStore.getCookie(url))
|
||||||
binding.webView.addJavascriptInterface(this, "app")
|
binding.webView.addJavascriptInterface(this, "app")
|
||||||
upWebViewTheme()
|
|
||||||
binding.webView.setOnLongClickListener {
|
binding.webView.setOnLongClickListener {
|
||||||
val hitTestResult = binding.webView.hitTestResult
|
val hitTestResult = binding.webView.hitTestResult
|
||||||
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
||||||
@@ -122,25 +120,6 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun upWebViewTheme() {
|
|
||||||
if (AppConfig.isNightTheme) {
|
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
WebSettingsCompat.setForceDarkStrategy(
|
|
||||||
binding.webView.settings,
|
|
||||||
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
WebSettingsCompat.setForceDark(
|
|
||||||
binding.webView.settings,
|
|
||||||
WebSettingsCompat.FORCE_DARK_ON
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun saveImage(webPic: String) {
|
private fun saveImage(webPic: String) {
|
||||||
this.webPic = webPic
|
this.webPic = webPic
|
||||||
val path = ACache.get().getAsString(imagePathKey)
|
val path = ACache.get().getAsString(imagePathKey)
|
||||||
@@ -227,8 +206,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Deprecated in Java")
|
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
||||||
url?.let {
|
url?.let {
|
||||||
return shouldOverrideUrlLoading(Uri.parse(it))
|
return shouldOverrideUrlLoading(Uri.parse(it))
|
||||||
|
|||||||
@@ -4,14 +4,11 @@ import android.annotation.SuppressLint
|
|||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.webkit.*
|
import android.webkit.*
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.view.size
|
import androidx.core.view.size
|
||||||
import androidx.webkit.WebSettingsCompat
|
|
||||||
import androidx.webkit.WebViewFeature
|
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.constant.AppConst
|
import io.legado.app.constant.AppConst
|
||||||
@@ -128,9 +125,9 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|||||||
domStorageEnabled = true
|
domStorageEnabled = true
|
||||||
allowContentAccess = true
|
allowContentAccess = true
|
||||||
builtInZoomControls = true
|
builtInZoomControls = true
|
||||||
|
setDarkeningAllowed(AppConfig.isNightTheme)
|
||||||
}
|
}
|
||||||
binding.webView.addJavascriptInterface(this, "app")
|
binding.webView.addJavascriptInterface(this, "app")
|
||||||
upWebViewTheme()
|
|
||||||
binding.webView.setOnLongClickListener {
|
binding.webView.setOnLongClickListener {
|
||||||
val hitTestResult = binding.webView.hitTestResult
|
val hitTestResult = binding.webView.hitTestResult
|
||||||
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
||||||
@@ -217,29 +214,6 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("RequiresFeature")
|
|
||||||
private fun upWebViewTheme() {
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
|
||||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(binding.webView.settings, AppConfig.isNightTheme)
|
|
||||||
}
|
|
||||||
if (AppConfig.isNightTheme) {
|
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
WebSettingsCompat.setForceDarkStrategy(
|
|
||||||
binding.webView.settings,
|
|
||||||
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
WebSettingsCompat.setForceDark(
|
|
||||||
binding.webView.settings,
|
|
||||||
WebSettingsCompat.FORCE_DARK_ON
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun upStarMenu() {
|
override fun upStarMenu() {
|
||||||
if (viewModel.rssStar != null) {
|
if (viewModel.rssStar != null) {
|
||||||
starMenuItem?.setIcon(R.drawable.ic_star)
|
starMenuItem?.setIcon(R.drawable.ic_star)
|
||||||
@@ -345,7 +319,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
|
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
||||||
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
||||||
url?.let {
|
url?.let {
|
||||||
return shouldOverrideUrlLoading(Uri.parse(it))
|
return shouldOverrideUrlLoading(Uri.parse(it))
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package io.legado.app.utils
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.os.Build
|
||||||
|
import android.webkit.WebSettings
|
||||||
|
import androidx.webkit.WebSettingsCompat
|
||||||
|
import androidx.webkit.WebViewFeature
|
||||||
|
import io.legado.app.help.config.AppConfig
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否夜间模式
|
||||||
|
*/
|
||||||
|
@SuppressLint("RequiresFeature")
|
||||||
|
fun WebSettings.setDarkeningAllowed(allow: Boolean) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
WebSettingsCompat.setAlgorithmicDarkeningAllowed(this, allow)
|
||||||
|
} else if (AppConfig.isNightTheme) {
|
||||||
|
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
WebSettingsCompat.setForceDarkStrategy(
|
||||||
|
this,
|
||||||
|
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
WebSettingsCompat.setForceDark(
|
||||||
|
this,
|
||||||
|
WebSettingsCompat.FORCE_DARK_ON
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user