From e31a6deed3bb2b8957c4ce8ce9bd3e697f1ce018 Mon Sep 17 00:00:00 2001
From: HapeLee <1321903405@qq.com>
Date: Sat, 10 Jan 2026 03:31:25 +0800
Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=20=E6=AD=A3=E6=96=87?=
=?UTF-8?q?=E5=BC=BA=E8=B0=83=E8=89=B2=E8=AE=BE=E7=BD=AE=20(@Luoyacheng)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../legado/app/help/config/ReadBookConfig.kt | 60 +++++++++++++++++--
.../app/ui/book/read/ReadBookActivity.kt | 16 ++++-
.../ui/book/read/config/FontConfigDialog.kt | 15 ++++-
.../ui/book/read/page/entities/TextLine.kt | 2 +-
.../read/page/entities/column/TextColumn.kt | 3 +-
.../main/res/layout/dialog_font_config.xml | 33 +++++++---
app/src/main/res/values-zh-rCN/strings.xml | 6 +-
app/src/main/res/values/strings.xml | 4 +-
8 files changed, 115 insertions(+), 24 deletions(-)
diff --git a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt
index 8a4429dad..1981b094b 100644
--- a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt
+++ b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt
@@ -5,6 +5,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import androidx.annotation.Keep
+import androidx.core.graphics.drawable.toDrawable
import androidx.core.graphics.toColorInt
import com.google.android.material.color.MaterialColors
import io.legado.app.constant.AppLog
@@ -27,14 +28,11 @@ import io.legado.app.utils.getPrefBoolean
import io.legado.app.utils.getPrefInt
import io.legado.app.utils.hexString
import io.legado.app.utils.printOnDebug
+import io.legado.app.utils.putPrefBoolean
import io.legado.app.utils.putPrefInt
import io.legado.app.utils.resizeAndRecycle
import splitties.init.appCtx
import java.io.File
-import kotlin.String
-import androidx.core.graphics.drawable.toDrawable
-import io.legado.app.utils.FileDoc
-import io.legado.app.utils.putPrefBoolean
/**
* 阅读界面配置
@@ -61,6 +59,7 @@ object ReadBookConfig {
var bg: Drawable? = null
var bgMeanColor: Int = 0
val textColor: Int get() = durConfig.curTextColor()
+ val textAccentColor: Int get() = durConfig.curTextAccentColor()
val textShadowColor: Int get() = durConfig.curTextShadowColor()
val menuColor: Int get() = durConfig.curMenuAc()
init {
@@ -603,6 +602,7 @@ object ReadBookConfig {
config.bgStrEInk.toColorInt()
}
config.curTextColor()
+ config.curTextAccentColor()
return config
}
@@ -626,6 +626,9 @@ object ReadBookConfig {
private var textColor: String = "#3E3D3B",//白天文字颜色
private var textColorNight: String = "#ADADAD",//夜间文字颜色
private var textColorEInk: String = "#000000",
+ private var textAccentColor: String = "#834E00",//白天强调文字颜色
+ private var textAccentColorNight: String = "#FE4D55",//夜间强调文字颜色
+ private var textAccentColorEInk: String = "#000000",
private var pageAnim: Int = 0,//翻页动画
private var pageAnimEInk: Int = 4,
var textFont: String = "",//字体
@@ -718,6 +721,18 @@ object ReadBookConfig {
@Transient
private var underlineColorNightInt = -1
+ @Transient
+ private var textAccentColorIntEInk = -1
+
+ @Transient
+ private var textAccentColorIntNight = -1
+
+ @Transient
+ private var textAccentColorInt = -1
+
+ @Transient
+ private var initAccentColorInt = false
+
@Transient
private var initColorInt = false
@@ -760,6 +775,43 @@ object ReadBookConfig {
initColorInt = true
}
+ private fun initAccentColorInt() {
+ textAccentColorIntEInk = textAccentColorEInk.toColorInt()
+ textAccentColorIntNight = textAccentColorNight.toColorInt()
+ textAccentColorInt = textAccentColor.toColorInt()
+ initAccentColorInt = true
+ }
+
+ fun setCurTextAccentColor(color: Int) {
+ when {
+ AppConfig.isEInkMode -> {
+ textAccentColorEInk = "#${color.hexString}"
+ textAccentColorIntEInk = color
+ }
+
+ AppConfig.isNightTheme -> {
+ textAccentColorNight = "#${color.hexString}"
+ textAccentColorIntNight = color
+ }
+
+ else -> {
+ textAccentColor = "#${color.hexString}"
+ textAccentColorInt = color
+ }
+ }
+ }
+
+ fun curTextAccentColor(): Int {
+ if (!initAccentColorInt) {
+ initAccentColorInt()
+ }
+ return when {
+ AppConfig.isEInkMode -> textAccentColorIntEInk
+ AppConfig.isNightTheme -> textAccentColorIntNight
+ else -> textAccentColorInt
+ }
+ }
+
fun setCurShadColor(color: Int){
when {
AppConfig.isNightTheme -> {
diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
index da26f7d66..603b4ed52 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
@@ -76,8 +76,9 @@ import io.legado.app.ui.book.info.BookInfoActivity
import io.legado.app.ui.book.read.config.AutoReadDialog
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
import io.legado.app.ui.book.read.config.FontConfigDialog
-import io.legado.app.ui.book.read.config.FontConfigDialog.Companion.TEXT_COLOR
import io.legado.app.ui.book.read.config.FontConfigDialog.Companion.S_COLOR
+import io.legado.app.ui.book.read.config.FontConfigDialog.Companion.TEXT_ACCENT_COLOR
+import io.legado.app.ui.book.read.config.FontConfigDialog.Companion.TEXT_COLOR
import io.legado.app.ui.book.read.config.FontSelectDialog
import io.legado.app.ui.book.read.config.ReadAloudDialog
import io.legado.app.ui.book.read.config.ReadStyleDialog
@@ -1529,10 +1530,10 @@ class ReadBookActivity : BaseReadBookActivity(),
}
val (result, urlOptionStr) = when {
braceIndex != -1 -> {
- clickjs.substring(0, braceIndex) to clickjs.substring(braceIndex + 1)
+ clickjs.take(braceIndex) to clickjs.substring(braceIndex + 1)
}
else -> {
- clickjs.substring(0, braceIndex2) to clickjs.substring(braceIndex2 + 2)
+ clickjs.take(braceIndex2) to clickjs.substring(braceIndex2 + 2)
}
}
if (urlOptionStr.isJsonObject()) {
@@ -1602,6 +1603,7 @@ class ReadBookActivity : BaseReadBookActivity(),
setCurShadColor(color)
postEvent(EventBus.UP_CONFIG, arrayListOf(2, 6, 9, 11))
}
+
TEXT_COLOR -> {
setCurTextColor(color)
postEvent(EventBus.UP_CONFIG, arrayListOf(2, 6, 9, 11))
@@ -1610,6 +1612,14 @@ class ReadBookActivity : BaseReadBookActivity(),
}
}
+ TEXT_ACCENT_COLOR -> {
+ setCurTextAccentColor(color)
+ postEvent(EventBus.UP_CONFIG, arrayListOf(2, 6, 9, 11))
+ if (AppConfig.readBarStyleFollowPage) {
+ postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
+ }
+ }
+
BG_COLOR -> {
setCurBg(0, "#${color.hexString}")
postEvent(EventBus.UP_CONFIG, arrayListOf(1))
diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/FontConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/FontConfigDialog.kt
index 1a7e291bd..ca8b6d438 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/config/FontConfigDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/config/FontConfigDialog.kt
@@ -2,13 +2,13 @@ package io.legado.app.ui.book.read.config
import android.os.Bundle
import android.view.View
-import io.legado.app.help.config.ReadBookConfig
import com.jaredrummler.android.colorpicker.ColorPickerDialog
import io.legado.app.R
import io.legado.app.base.BaseBottomSheetDialogFragment
import io.legado.app.constant.EventBus
import io.legado.app.databinding.DialogFontConfigBinding
import io.legado.app.help.config.AppConfig
+import io.legado.app.help.config.ReadBookConfig
import io.legado.app.help.config.ReadBookConfig.underline
import io.legado.app.lib.dialogs.alert
import io.legado.app.ui.book.read.ReadBookActivity
@@ -24,6 +24,7 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
companion object {
const val S_COLOR = 123
const val TEXT_COLOR = 121
+ const val TEXT_ACCENT_COLOR = 122
}
private val binding by viewBinding(DialogFontConfigBinding::bind)
@@ -39,6 +40,7 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
if (list.contains(2)) {
binding.btnTextColor.color = ReadBookConfig.durConfig.curTextColor()
binding.btnShadowColor.color = ReadBookConfig.durConfig.curTextShadowColor()
+ binding.btnTextAccentColor.color = ReadBookConfig.durConfig.curTextAccentColor()
}
}
initView()
@@ -48,6 +50,8 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
private fun initView() = binding.run {
binding.btnTextColor.color = ReadBookConfig.durConfig.curTextColor()
+ binding.btnShadowColor.color = ReadBookConfig.durConfig.curTextShadowColor()
+ binding.btnTextAccentColor.color = ReadBookConfig.durConfig.curTextAccentColor()
binding.swUnderline.isChecked = underline
dsbTextLetterSpacing.valueFormat = {
((it - 50) / 100f).toString()
@@ -129,7 +133,14 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
.setDialogId(TEXT_COLOR)
.show(requireActivity())
}
-
+ binding.btnTextAccentColor.setOnClickListener {
+ ColorPickerDialog.newBuilder()
+ .setColor(ReadBookConfig.durConfig.curTextAccentColor())
+ .setShowAlphaSlider(false)
+ .setDialogType(ColorPickerDialog.TYPE_CUSTOM)
+ .setDialogId(TEXT_ACCENT_COLOR)
+ .show(requireActivity())
+ }
binding.swUnderline.addOnCheckedChangeListener { _, isChecked ->
callBack2?.showUnderlineConfig()
}
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
index 3c72f810f..46f7e74d7 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt
@@ -177,7 +177,7 @@ data class TextLine(
ChapterProvider.contentPaint
}
val textColor = if (isReadAloud) {
- ReadBookConfig.menuColor
+ ReadBookConfig.textAccentColor
} else {
ReadBookConfig.textColor
}
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt b/app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt
index 35e131731..5f23764bd 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/entities/column/TextColumn.kt
@@ -8,7 +8,6 @@ import io.legado.app.ui.book.read.page.ContentTextView
import io.legado.app.ui.book.read.page.entities.TextLine
import io.legado.app.ui.book.read.page.entities.TextLine.Companion.emptyTextLine
import io.legado.app.ui.book.read.page.provider.ChapterProvider
-import io.legado.app.utils.themeColor
/**
* 文字列
@@ -49,7 +48,7 @@ data class TextColumn(
ChapterProvider.contentPaint
}
val textColor = if (textLine.isReadAloud || isSearchResult) {
- view.context.themeColor(androidx.appcompat.R.attr.colorPrimary)
+ ReadBookConfig.textAccentColor
} else {
ReadBookConfig.textColor
}
diff --git a/app/src/main/res/layout/dialog_font_config.xml b/app/src/main/res/layout/dialog_font_config.xml
index 16b6d5b46..4d12a13aa 100644
--- a/app/src/main/res/layout/dialog_font_config.xml
+++ b/app/src/main/res/layout/dialog_font_config.xml
@@ -81,8 +81,25 @@
android:layout_height="wrap_content"
app:icon="@drawable/ic_text_weight_2"/>
+
+
+
+
+
+
-
-
朗读引擎
背景图片
背景颜色
- 文字颜色
+ 正文
选择图片
分组管理
分组选择
@@ -1306,7 +1306,7 @@
X轴距离
Y轴距离
阴影半径
- 阴影颜色
+ 阴影
阅读显示 • 漫画相关
屏幕显示与亮度
阅读行为
@@ -1364,4 +1364,6 @@
编辑备注
书籍备注
自动检查新备份
+ 强调
+ 颜色样式
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5cf629d03..e5046e13f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1309,7 +1309,7 @@
X轴距离
Y轴距离
阴影半径
- 阴影颜色
+ 阴影
阅读显示 • 漫画相关
屏幕显示与亮度
阅读行为
@@ -1369,4 +1369,6 @@
书籍备注
保存至本地
选择操作
+ 强调
+ 颜色样式