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 @@
从新到旧
名称升序
名称降序
+ 文字下划虚线