diff --git a/app/build.gradle b/app/build.gradle
index 8cbce29c4..d380dbb4d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -157,7 +157,7 @@ dependencies {
implementation('androidx.webkit:webkit:1.4.0')
//google
- implementation('com.google.android.material:material:1.5.0')
+ implementation('com.google.android.material:material:1.6.0')
implementation('com.google.android.flexbox:flexbox:3.0.0')
implementation('com.google.code.gson:gson:2.9.0')
diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt
index bf53e23a8..588ca8581 100644
--- a/app/src/main/java/io/legado/app/constant/PreferKey.kt
+++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt
@@ -80,6 +80,8 @@ object PreferKey {
const val importKeepName = "importKeepName"
const val screenOrientation = "screenOrientation"
const val syncBookProgress = "syncBookProgress"
+ const val cronet = "Cronet"
+ const val antiAlias = "antiAlias"
const val preDownloadNum = "preDownloadNum"
const val autoRefresh = "auto_refresh"
const val defaultToRead = "defaultToRead"
diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt
index c0bf7709e..f36decf1d 100644
--- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt
+++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt
@@ -11,7 +11,8 @@ import splitties.init.appCtx
@Suppress("MemberVisibilityCanBePrivate")
object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
val isGooglePlay = appCtx.channel == "google"
- val isCronet = appCtx.getPrefBoolean("Cronet")
+ val isCronet = appCtx.getPrefBoolean(PreferKey.cronet)
+ val useAntiAlias = appCtx.getPrefBoolean(PreferKey.antiAlias)
var userAgent: String = getPrefUserAgent()
var isEInkMode = appCtx.getPrefString(PreferKey.themeMode) == "3"
var clickActionTL = appCtx.getPrefInt(PreferKey.clickActionTL, 2)
diff --git a/app/src/main/java/io/legado/app/help/http/cronet/AbsCallBack.kt b/app/src/main/java/io/legado/app/help/http/cronet/AbsCallBack.kt
index 0728b1db3..192206435 100644
--- a/app/src/main/java/io/legado/app/help/http/cronet/AbsCallBack.kt
+++ b/app/src/main/java/io/legado/app/help/http/cronet/AbsCallBack.kt
@@ -21,7 +21,7 @@ abstract class AbsCallBack(
private val eventListener: EventListener? = null,
private val responseCallback: Callback? = null
-) : UrlRequest.Callback() {
+) : UrlRequest.Callback(), AutoCloseable {
val buffer = Buffer()
@@ -225,4 +225,8 @@ abstract class AbsCallBack(
.build()
}
}
+
+ override fun close() {
+ buffer.clear()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/help/http/cronet/CronetInterceptor.kt b/app/src/main/java/io/legado/app/help/http/cronet/CronetInterceptor.kt
index ffd701268..daa774dfa 100644
--- a/app/src/main/java/io/legado/app/help/http/cronet/CronetInterceptor.kt
+++ b/app/src/main/java/io/legado/app/help/http/cronet/CronetInterceptor.kt
@@ -4,11 +4,15 @@ import android.os.Build
import io.legado.app.utils.printOnDebug
import okhttp3.*
import okhttp3.internal.http.receiveHeaders
+import java.io.IOException
class CronetInterceptor(private val cookieJar: CookieJar = CookieJar.NO_COOKIES) : Interceptor {
-
+ @Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
+ if (chain.call().isCanceled()) {
+ throw IOException("Canceled")
+ }
val original: Request = chain.request()
//Cronet未初始化
return if (!CronetLoader.install() || cronetEngine == null) {
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
index d6e498e12..a9fdb979a 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt
@@ -3,13 +3,13 @@ package io.legado.app.ui.book.read.page
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
-import android.graphics.PaintFlagsDrawFilter
import android.graphics.RectF
import android.util.AttributeSet
import android.view.View
import io.legado.app.R
import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.Bookmark
+import io.legado.app.help.config.AppConfig
import io.legado.app.help.config.ReadBookConfig
import io.legado.app.lib.theme.accentColor
import io.legado.app.model.ReadBook
@@ -49,12 +49,20 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
private val pageFactory: TextPageFactory get() = callBack.pageFactory
private var pageOffset = 0
+ //绘制图片的paint
+ private val imagePaint by lazy {
+ Paint().apply {
+ isAntiAlias = AppConfig.useAntiAlias
+ }
+ }
+
init {
callBack = activity as CallBack
}
fun setContent(textPage: TextPage) {
this.textPage = textPage
+ imagePaint.isAntiAlias = AppConfig.useAntiAlias
invalidate()
}
@@ -163,8 +171,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
lineTop: Float,
lineBottom: Float
) {
- canvas.drawFilter =
- PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG or Paint.FILTER_BITMAP_FLAG)
+
val book = ReadBook.book ?: return
val bitmap = ImageProvider.getImage(
book,
@@ -181,7 +188,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
RectF(textChar.start, lineTop + div, textChar.end, lineBottom - div)
}
kotlin.runCatching {
- canvas.drawBitmap(bitmap, null, rectF, null)
+ canvas.drawBitmap(bitmap, null, rectF, imagePaint)
}.onFailure { e ->
context.toastOnUi(e.localizedMessage)
}
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index f62a1d248..c9f72740e 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -866,6 +866,8 @@
Disabled when 0, enable range from 1 to 25\nThe greater the radius, the stronger the effect of blurring
需登录
使用Cronet网络组件
+ Anti-Aliasing
+ Anti-Aliasing when draw picture
上传URL
下载URL规则
Ordenar por tiempo de respuesta
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index 11a2729de..7f71a4052 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -869,6 +869,8 @@
Disabled when 0, enable range from 1 to 25\nThe greater the radius, the stronger the effect of blurring
需登录
使用Cronet网络组件
+ Anti-Aliasing
+ Anti-Aliasing when draw picture
上传URL
下载URL规则
Sort by respond time
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index f0e4b8cf3..2557fcd28 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -867,6 +867,8 @@
Desativado quando 0, Ativado entre 1 e 25\n Quanto maior o raio, mais forte o efeito de desfocagem
Login necessário
Usando componentes de rede Cronet
+ Anti-Aliasing
+ Anti-Aliasing when draw picture
上传URL
下载URL规则
Classificar por tempo de resposta
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 7b938e9f3..d5eb8d2fe 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -866,6 +866,8 @@
書源校驗時顯示網絡請求步驟和時間
需登錄
使用Cronet網絡組件
+ 抗鋸齒
+ 繪製圖片時抗鋸齒
上傳URL
下載URL規則
響應時間排序
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 6ba87de41..34698cecd 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -868,6 +868,8 @@
書源校驗時顯示網路請求步驟和時間
需登入
使用Cronet網路元件
+ 抗鋸齒
+ 繪製圖片時抗鋸齒
上傳URL
下載URL規則
反應時間排序
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 7b0f3ef18..a6b6d27a9 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -870,6 +870,8 @@
书源校验时显示网络请求步骤和时间
需登录
使用Cronet网络组件
+ 抗锯齿
+ 绘制图片时抗锯齿
上传URL
下载URL规则
响应时间排序
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 05df4e53b..d8ec067af 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -870,6 +870,8 @@
Show network status and timestamp during source checking
need login
use Cronet access network
+ Anti-Aliasing
+ Anti-Aliasing when draw picture
upload url
下载URL规则
export success
@@ -974,5 +976,7 @@
是否确认换源
输入验证码
验证码
+
+
diff --git a/app/src/main/res/xml/pref_config_other.xml b/app/src/main/res/xml/pref_config_other.xml
index 9388b4878..0b0d6ffa8 100644
--- a/app/src/main/res/xml/pref_config_other.xml
+++ b/app/src/main/res/xml/pref_config_other.xml
@@ -75,6 +75,11 @@
android:key="Cronet"
android:summary="@string/pref_cronet_summary"
android:title="Cronet" />
+