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 454bc76ec..52b8c125e 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 @@ -382,6 +382,12 @@ object ReadBookConfig { config.underline = value } + var dottedLine: Boolean + get() = config.dottedLine + set(value) { + config.dottedLine = value + } + var paddingBottom: Int get() = config.paddingBottom set(value) { @@ -600,6 +606,7 @@ object ReadBookConfig { var titleSegFlag: String = "",//分段判断,碰到指定值时分段 var paragraphIndent: String = "  ",//段落缩进 var underline: Boolean = false, //下划线 + var dottedLine: Boolean = false, //虚线 var paddingBottom: Int = 6, var paddingLeft: Int = 16, var paddingRight: Int = 16, diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt index d168681f8..66397f25c 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt @@ -131,6 +131,8 @@ class BgTextConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_bg binding.tvName.text = name.ifBlank { "文字" } binding.swDarkStatusIcon.isChecked = curStatusIconDark() binding.swUnderline.isChecked = underline + binding.swDottedline.isChecked = dottedLine + binding.swDottedline.isEnabled = underline binding.sbBgAlpha.value = ReadBookConfig.bgAlpha.toFloat() } @@ -169,6 +171,15 @@ class BgTextConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_bg } binding.swUnderline.setOnCheckedChangeListener { _, isChecked -> underline = isChecked + binding.swDottedline.isEnabled = isChecked + if (!isChecked) { + dottedLine = false + binding.swDottedline.isChecked = false + } + postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11)) + } + binding.swDottedline.setOnCheckedChangeListener { _, isChecked -> + dottedLine = isChecked postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11)) } binding.tvTextColor.setOnClickListener { 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 a8aa041f8..505e0a5df 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 @@ -2,6 +2,7 @@ package io.legado.app.ui.book.read.page.entities import android.annotation.SuppressLint import android.graphics.Canvas +import android.graphics.DashPathEffect import android.graphics.Paint.FontMetrics import android.os.Build import androidx.annotation.Keep @@ -170,7 +171,7 @@ data class TextLine( PaintPool.recycle(underlinePaint) } if (ReadBookConfig.underline && !isImage && ReadBook.book?.isImage != true) { - drawUnderline(canvas) + drawUnderline(canvas, ReadBookConfig.dottedLine) } } @@ -213,17 +214,24 @@ data class TextLine( /** * 绘制下划线 */ - private fun drawUnderline(canvas: Canvas) { + private fun drawUnderline(canvas: Canvas, dottedLine: Boolean) { val lineY = height - 1.dpToPx() + val paint = ChapterProvider.contentPaint + val oldEffect = paint.pathEffect + if (dottedLine) { + paint.pathEffect = DashPathEffect(floatArrayOf(6f, 6f), 0f) + } canvas.drawLine( lineStart + indentWidth, lineY, lineEnd, lineY, - ChapterProvider.contentPaint + paint ) + paint.pathEffect = oldEffect } + fun checkFastDraw(): Boolean { if (!AppConfig.optimizeRender || exceed || !onlyTextColumn || textPage.isMsgPage) { return false diff --git a/app/src/main/res/layout/dialog_read_bg_text.xml b/app/src/main/res/layout/dialog_read_bg_text.xml index b34ae79d3..d88eb6c71 100644 --- a/app/src/main/res/layout/dialog_read_bg_text.xml +++ b/app/src/main/res/layout/dialog_read_bg_text.xml @@ -135,6 +135,14 @@ android:text="@string/text_underline" tools:ignore="TouchTargetSizeCheck" /> + + 从新到旧 名称升序 名称降序 + 文字下划虚线 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0006e1b56..4be9477b6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1326,4 +1326,5 @@ 从新到旧 名称升序 名称降序 + 文字下划虚线