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 @@ 书籍备注 保存至本地 选择操作 + 强调 + 颜色样式