From 858ba70c093ffb36089f8dd2ebe89ddfb9ba4ceb Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 8 Nov 2025 02:05:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=A0=8F=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E4=B8=8E=E4=BC=98=E5=8C=96=20#242=E3=80=81#243?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/constant/PreferKey.kt | 1 + .../io/legado/app/help/config/AppConfig.kt | 7 + .../legado/app/help/config/ReadBookConfig.kt | 62 +++++++ .../app/ui/book/read/ReadBookActivity.kt | 21 ++- .../io/legado/app/ui/book/read/ReadMenu.kt | 91 ++++++---- .../ui/book/read/config/TipConfigDialog.kt | 53 ++++-- .../java/io/legado/app/ui/widget/TitleBar.kt | 2 +- app/src/main/res/drawable/rounded_rect.xml | 2 +- .../main/res/layout-land/view_read_menu.xml | 5 +- app/src/main/res/layout/dialog_tip_config.xml | 156 +++++++++++------- app/src/main/res/layout/view_read_menu.xml | 4 +- app/src/main/res/layout/view_title_bar.xml | 1 - .../main/res/layout/view_title_bar_dark.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values-zh/strings.xml | 3 +- app/src/main/res/values/attrs.xml | 5 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 4 + app/src/main/res/xml/pref_config_read.xml | 4 - 20 files changed, 312 insertions(+), 116 deletions(-) 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 f4744a6ce..749ef7add 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -211,4 +211,5 @@ object PreferKey { const val systemMediaControlCompatibilityChange = "systemMediaControlCompatibilityChange" const val isPredictiveBackEnabled = "isPredictiveBackEnabled" const val replaceSortMode = "desc" + const val readBarStyle = "0" } 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 69d09cec3..655f56eac 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 @@ -648,12 +648,19 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { set(value) { appCtx.putPrefBoolean(PreferKey.showReadTitleAddition, value) } + var readBarStyleFollowPage: Boolean get() = appCtx.getPrefBoolean(PreferKey.readBarStyleFollowPage, false) set(value) { appCtx.putPrefBoolean(PreferKey.readBarStyleFollowPage, value) } + var readBarStyle: Int + get() = appCtx.getPrefInt(PreferKey.readBarStyle, 0) + set(value) { + appCtx.putPrefInt(PreferKey.readBarStyle, value) + } + var sourceEditMaxLine: Int get() { val maxLine = appCtx.getPrefInt(PreferKey.sourceEditMaxLine, Int.MAX_VALUE) 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 5a1942f50..c22ac491f 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 @@ -580,6 +580,10 @@ object ReadBookConfig { var name: String = "", var bgStr: String = "#EEEEEE",//白天背景 var bgStrNight: String = "#000000",//夜间背景 + var menuBgColor: String = "#EEEFE3", + var menuAcColor: String = "#EEEFE3", + var menuBgColorNight: String = "#BFCBAD", + var menuAcColorNight: String = "#586249", var bgStrEInk: String = "#FFFFFF",//EInk背景 var bgAlpha: Int = 100,//背景透明度 var bgType: Int = 0,//白天背景类型 0:颜色, 1:assets图片, 2其它图片 @@ -662,6 +666,18 @@ object ReadBookConfig { @Transient private var textColorSInt = -1 + @Transient + private var menuBgColorInt = -1 + + @Transient + private var menuBgColorNightInt = -1 + + @Transient + private var menuAcColorInt = -1 + + @Transient + private var menuAcColorNightInt = -1 + @Transient private var initColorInt = false @@ -671,6 +687,10 @@ object ReadBookConfig { textColorInt = textColor.toColorInt() textColorSIntNight = shadowColorN.toColorInt() textColorSInt = shadowColor.toColorInt() + menuBgColorInt = menuBgColor.toColorInt() + menuBgColorNightInt = menuBgColorNight.toColorInt() + menuAcColorInt = menuAcColor.toColorInt() + menuAcColorNightInt = menuAcColorNight.toColorInt() initColorInt = true } @@ -784,6 +804,48 @@ object ReadBookConfig { } } + fun curMenuBg(): Int { + return when { + AppConfig.isNightTheme -> menuBgColorNightInt + else -> menuBgColorInt + } + } + + fun setMenuCurBg(bg: Int) { + when { + AppConfig.isNightTheme -> { + menuBgColorNight = "#${bg.hexString}" + menuBgColorNightInt = bg + } + + else -> { + menuBgColor = "#${bg.hexString}" + menuBgColorInt = bg + } + } + } + + fun curMenuAc(): Int { + return when { + AppConfig.isNightTheme -> menuAcColorNightInt + else -> menuAcColorInt + } + } + + fun setMenuCurAc(bg: Int) { + when { + AppConfig.isNightTheme -> { + menuAcColorNight = "#${bg.hexString}" + menuAcColorNightInt = bg + } + + else -> { + menuAcColor = "#${bg.hexString}" + menuAcColorInt = bg + } + } + } + fun curBgType(): Int { return when { AppConfig.isEInkMode -> bgTypeEInk 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 278b13d31..e2c134282 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 @@ -79,6 +79,8 @@ import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR import io.legado.app.ui.book.read.config.FontSelectDialog.Companion.S_COLOR import io.legado.app.ui.book.read.config.ReadAloudDialog import io.legado.app.ui.book.read.config.ReadStyleDialog +import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.A_COLOR +import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.B_COLOR import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.TIP_COLOR import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.TIP_DIVIDER_COLOR import io.legado.app.ui.book.read.config.ToolButtonConfigDialog @@ -126,6 +128,7 @@ import io.legado.app.utils.showHelp import io.legado.app.utils.startActivity import io.legado.app.utils.startActivityForBook import io.legado.app.utils.sysScreenOffTime +import io.legado.app.utils.themeColor import io.legado.app.utils.throttle import io.legado.app.utils.toastOnUi import io.legado.app.utils.visible @@ -278,13 +281,17 @@ class ReadBookActivity : BaseReadBookActivity(), window.sharedElementReturnTransition = transform } super.onCreate(savedInstanceState) - if (AppConfig.sharedElementEnterTransitionEnable){ binding.rootView.transitionName = intent.getStringExtra("transitionName") } upScreenTimeOut() ReadBook.register(this) - + binding.readMenu.colorSurfaceContainer = + themeColor(com.google.android.material.R.attr.colorSurfaceContainer) + binding.readMenu.colorSecondary = + themeColor(androidx.appcompat.R.attr.colorPrimary) + binding.readMenu.colorSecondaryContainer = + themeColor(com.google.android.material.R.attr.colorSecondaryContainer) binding.cursorLeft.setOnTouchListener(this) binding.cursorRight.setOnTouchListener(this) @@ -1538,6 +1545,16 @@ class ReadBookActivity : BaseReadBookActivity(), postEvent(EventBus.TIP_COLOR, "") postEvent(EventBus.UP_CONFIG, arrayListOf(2)) } + + B_COLOR -> { + setMenuCurBg(color) + postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) + } + + A_COLOR -> { + setMenuCurAc(color) + postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) + } } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt index 5c6e2e947..0885f5e94 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt @@ -15,6 +15,7 @@ import android.widget.FrameLayout import android.widget.SeekBar import androidx.appcompat.widget.PopupMenu import androidx.core.graphics.ColorUtils +import androidx.core.graphics.toColorInt import androidx.core.view.doOnAttach import androidx.core.view.isGone import androidx.core.view.isVisible @@ -27,6 +28,7 @@ import io.legado.app.constant.PreferKey import io.legado.app.databinding.ViewReadMenuBinding import io.legado.app.help.config.AppConfig import io.legado.app.help.config.LocalConfig +import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ThemeConfig import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.source.getSourceType @@ -87,25 +89,51 @@ class ReadMenu @JvmOverloads constructor( fillAfter = true } -// private val immersiveMenu: Boolean -// get() = AppConfig.readBarStyleFollowPage && ReadBookConfig.durConfig.curBgType() == 0 -// private var bgColor: Int = if (immersiveMenu) { -// kotlin.runCatching { -// ReadBookConfig.durConfig.curBgStr().toColorInt() -// }.getOrDefault(context.bottomBackground) -// } else { -// context.bottomBackground -// } -// private var textColor: Int = if (immersiveMenu) { -// ReadBookConfig.durConfig.curTextColor() -// } else { -// context.getPrimaryTextColor(ColorUtils.isColorLight(bgColor)) -// } + var colorSurfaceContainer: Int = context.themeColor(com.google.android.material.R.attr.colorSurfaceContainer) + set(value) { + field = value + } + + var colorSecondary: Int = context.themeColor(androidx.appcompat.R.attr.colorPrimary) + set(value) { + field = value + } + + var colorSecondaryContainer: Int = context.themeColor(com.google.android.material.R.attr.colorSecondaryContainer) + set(value) { + field = value + } + + private val bgColor: Int + get() = when (AppConfig.readBarStyle) { + 0 -> colorSurfaceContainer + 1 -> kotlin.runCatching { + ReadBookConfig.durConfig.curBgStr().toColorInt() + }.getOrDefault(colorSurfaceContainer) + else -> ReadBookConfig.durConfig.curMenuBg() + } + + + private val acColor: Int + get() = when (AppConfig.readBarStyle) { + 0 -> colorSecondary + 1 -> kotlin.runCatching { + ReadBookConfig.durConfig.curTextColor() + }.getOrDefault(colorSecondary) + else -> ReadBookConfig.durConfig.curMenuAc() + } + + + private val bgcColor: Int + get() = when (AppConfig.readBarStyle) { + 0 -> colorSecondaryContainer + 1 -> kotlin.runCatching { + val baseColor = ReadBookConfig.durConfig.curTextColor() + ColorUtils.setAlphaComponent(baseColor, (255 * 0.2f).toInt()) + }.getOrDefault(colorSecondaryContainer) + else -> ColorUtils.setAlphaComponent(acColor, (255 * 0.2f).toInt()) + } -// private var bottomBackgroundList: ColorStateList = Selector.colorBuild() -// .setDefaultColor(bgColor) -// .setPressedColor(ColorUtils.darkenColor(bgColor)) -// .create() private var onMenuOutEnd: (() -> Unit)? = null private val showBrightnessView @@ -182,11 +210,10 @@ class ReadMenu @JvmOverloads constructor( val brightnessBackground = GradientDrawable() brightnessBackground.cornerRadius = 5F.dpToPx() llBrightness.background = brightnessBackground - if (AppConfig.isEInkMode) { - titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom) - } else { - //llBottomBg.setBackgroundColor(bgColor) - } + +// if (AppConfig.isEInkMode) { +// titleBar.setBackgroundResource(R.drawable.bg_eink_border_bottom) +// } llBrightness.setOnClickListener(null) seekBrightness.post { @@ -202,9 +229,17 @@ class ReadMenu @JvmOverloads constructor( renderButtons(binding.bottomView, allButtons) } val alpha = (AppConfig.menuAlpha / 100f * 255).toInt() - val color = context.themeColor(com.google.android.material.R.attr.colorSurfaceContainer) - titleBar.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha)) - cdSlider.setCardBackgroundColor(ColorUtils.setAlphaComponent(color, alpha)) + titleBar.setBackgroundColor(ColorUtils.setAlphaComponent(bgColor, alpha)) + cdSlider.setCardBackgroundColor(ColorUtils.setAlphaComponent(bgColor, alpha)) + seekReadPage.trackInactiveTintList = ColorStateList.valueOf(bgcColor) + seekReadPage.trackActiveTintList = ColorStateList.valueOf(acColor) + seekReadPage.thumbTintList = ColorStateList.valueOf(acColor) + seekReadPage.tickActiveTintList = ColorStateList.valueOf(bgColor) + seekReadPage.tickInactiveTintList = ColorStateList.valueOf(acColor) + tvPre.iconTint = ColorStateList.valueOf(acColor) + tvNext.iconTint = ColorStateList.valueOf(acColor) + tvPre.backgroundTintList = ColorStateList.valueOf(bgColor) + tvNext.backgroundTintList = ColorStateList.valueOf(bgColor) tvPre.alpha = AppConfig.menuAlpha / 100f * 255 tvNext.alpha = AppConfig.menuAlpha / 100f * 255 upBrightnessVwPos() @@ -214,7 +249,7 @@ class ReadMenu @JvmOverloads constructor( if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { binding.bottomMenu.applyNavigationBarPadding() } else { - bottomView.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha)) + bottomView.setBackgroundColor(ColorUtils.setAlphaComponent(bgColor, alpha)) binding.bottomView.applyNavigationBarPadding() } } @@ -516,8 +551,8 @@ class ReadMenu @JvmOverloads constructor( tooltipText = btn.description strokeWidth = 0 iconGravity = MaterialButton.ICON_GRAVITY_TEXT_START + iconTint = ColorStateList.valueOf(acColor) maxLines = 1 - iconTint = ColorStateList.valueOf(context.themeColor(androidx.appcompat.R.attr.colorPrimary)) setOnClickListener { btn.onClick() } btn.onLongClick?.let { longAction -> setOnLongClickListener { diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/TipConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/TipConfigDialog.kt index aebbda2e9..61f4c97a9 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/TipConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/TipConfigDialog.kt @@ -10,6 +10,7 @@ import io.legado.app.base.BaseBottomSheetDialogFragment import io.legado.app.constant.EventBus import io.legado.app.databinding.DialogEditTextBinding import io.legado.app.databinding.DialogTipConfigBinding +import io.legado.app.help.config.AppConfig import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ReadTipConfig import io.legado.app.lib.dialogs.alert @@ -27,6 +28,8 @@ class TipConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_tip_config companion object { const val TIP_COLOR = 7897 const val TIP_DIVIDER_COLOR = 7898 + const val B_COLOR = 114 + const val A_COLOR = 514 } private val binding by viewBinding(DialogTipConfigBinding::bind) @@ -42,6 +45,10 @@ class TipConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_tip_config upTvTipColor() upTvTipDividerColor() } + observeEvent(EventBus.UPDATE_READ_ACTION_BAR) { + binding.abtnBackgroundColor.color = ReadBookConfig.durConfig.curMenuBg() + binding.abtnAccentColor.color = ReadBookConfig.durConfig.curMenuAc() + } } private fun initView() { @@ -61,25 +68,47 @@ class TipConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_tip_config weightOptions?.let { options -> items(options.toList()) { _, i -> ReadBookConfig.titleBold = weightValues[i] - binding.sliderFontWeight.value = - ReadBookConfig.titleBold.toFloat().coerceAtLeast(100f) - binding.textFontWeightConverter.text = options.getOrNull(i) ?: "" postEvent(EventBus.UP_CONFIG, arrayListOf(8, 9, 6)) } } } } + binding.abtnBackgroundColor.color = ReadBookConfig.durConfig.curMenuBg() + binding.abtnAccentColor.color = ReadBookConfig.durConfig.curMenuAc() + binding.abtnBackgroundColor.setOnClickListener { + ColorPickerDialog.newBuilder() + .setColor(ReadBookConfig.durConfig.curMenuBg()) + .setShowAlphaSlider(false) + .setDialogType(ColorPickerDialog.TYPE_CUSTOM) + .setDialogId(B_COLOR) + .show(requireActivity()) + } - binding.sliderFontWeight.apply { - valueFrom = 100f - valueTo = 900f - stepSize = 1f - value = ReadBookConfig.titleBold.toFloat().coerceAtLeast(100f) - addOnChangeListener { _, newValue, _ -> - binding.textFontWeightConverter.text = "自定义" - ReadBookConfig.titleBold = newValue.toInt() - postEvent(EventBus.UP_CONFIG, arrayListOf(5)) + binding.abtnAccentColor.setOnClickListener { + ColorPickerDialog.newBuilder() + .setColor(ReadBookConfig.durConfig.curMenuAc()) + .setShowAlphaSlider(false) + .setDialogType(ColorPickerDialog.TYPE_CUSTOM) + .setDialogId(A_COLOR) + .show(requireActivity()) + } + + binding.bottomMode.check( + when (AppConfig.readBarStyle) { + 0 -> R.id.bottom_mode1 + 1 -> R.id.bottom_mode2 + else -> R.id.bottom_mode3 } + ) + binding.bottomMode.setOnCheckedStateChangeListener { group, checkedIds -> + val checkedId = checkedIds.firstOrNull() ?: return@setOnCheckedStateChangeListener + AppConfig.readBarStyle = when (checkedId) { + R.id.bottom_mode1 -> 0 + R.id.bottom_mode2 -> 1 + R.id.bottom_mode3 -> 2 + else -> 0 + } + postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) } binding.btnTitleSegType.setOnClickListener { diff --git a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt index 1457776dd..55b488e60 100644 --- a/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/TitleBar.kt @@ -65,7 +65,7 @@ class TitleBar @JvmOverloads constructor( val titleText = a.getString(R.styleable.TitleBar_title) val subtitleText = a.getString(R.styleable.TitleBar_subtitle) - when (a.getInt(R.styleable.TitleBar_themeMode, 0)) { + when (a.getInt(R.styleable.TitleBar_isNavigationBackground, 0)) { 1 -> inflate(context, R.layout.view_title_bar_dark, this) else -> inflate(context, R.layout.view_title_bar, this) } diff --git a/app/src/main/res/drawable/rounded_rect.xml b/app/src/main/res/drawable/rounded_rect.xml index f4eed487d..5fa45277a 100644 --- a/app/src/main/res/drawable/rounded_rect.xml +++ b/app/src/main/res/drawable/rounded_rect.xml @@ -2,5 +2,5 @@ - + diff --git a/app/src/main/res/layout-land/view_read_menu.xml b/app/src/main/res/layout-land/view_read_menu.xml index a2c7ec01b..f37d70614 100644 --- a/app/src/main/res/layout-land/view_read_menu.xml +++ b/app/src/main/res/layout-land/view_read_menu.xml @@ -19,6 +19,8 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + app:isNavigationBackground="no" + style="@style/NoBackgroundNavi" android:background="?attr/colorSurfaceContainer" app:layout_constraintTop_toTopOf="parent"> @@ -64,10 +66,9 @@ android:text="@string/book_source" /> + - - + + @@ -111,49 +119,27 @@ android:layout_height="match_parent" android:layout_weight="1"/> + + + + - - - - - - - - - - - - - - - - + + + + - - + + + + @@ -428,6 +420,52 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_read_menu.xml b/app/src/main/res/layout/view_read_menu.xml index df34cb35d..01e00d791 100644 --- a/app/src/main/res/layout/view_read_menu.xml +++ b/app/src/main/res/layout/view_read_menu.xml @@ -19,6 +19,7 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" + app:isNavigationBackground="no" android:background="?attr/colorSurfaceContainer" app:layout_constraintTop_toTopOf="parent"> @@ -32,6 +33,7 @@ android:id="@+id/tv_book_name" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingBottom="8dp" style="@style/TextAppearance.Material3.TitleLarge" android:singleLine="true" /> @@ -63,7 +65,7 @@ android:maxLines="1" android:ellipsize="end" android:gravity="end" - android:paddingVertical="8dp" + android:paddingBottom="8dp" android:text="@string/book_source" /> diff --git a/app/src/main/res/layout/view_title_bar.xml b/app/src/main/res/layout/view_title_bar.xml index 0a7b6c390..0307737b8 100644 --- a/app/src/main/res/layout/view_title_bar.xml +++ b/app/src/main/res/layout/view_title_bar.xml @@ -1,6 +1,5 @@ - diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index d1de1230a..bc2316967 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1158,7 +1158,7 @@ 创建堆转储 当应用发生OOM崩溃时保存堆转储 记录堆转储 - 中/粗/细 + 字重 继续滑动以加载下一章… 启用绘制优化 阅读需要请求后台权限以保持服务正常运行 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a35797f0a..5d7e73daf 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1160,7 +1160,7 @@ 创建堆转储 当应用发生OOM崩溃时保存堆转储 记录堆转储 - 中/粗/细 + 字重 继续滑动以加载下一章… 启用绘制优化 阅读需要请求后台权限以保持服务正常运行 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 53970edb0..a57fe920a 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1165,7 +1165,7 @@ 创建堆转储 当应用发生OOM崩溃时保存堆转储 记录堆转储 - 中/粗/细 + 字重 继续滑动以加载下一章… 启用绘制优化 阅读需要请求后台权限以保持服务正常运行,拒绝后不再弹出。如有需要可至高级设置中再次申请。 @@ -1330,4 +1330,5 @@ 取消选择 折叠所有卷 展开所有卷 + 自定义 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index ea732a5b3..a15a729c8 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -30,7 +30,10 @@ - + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f8d39a68..795cd00de 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1331,4 +1331,5 @@ 取消选择 折叠所有卷 展开所有卷 + 自定义 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index db1a9954b..081058acb 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -37,6 +37,10 @@ @color/chip_stroke_selector + +