文字下划虚线 #164
This commit is contained in:
@@ -382,6 +382,12 @@ object ReadBookConfig {
|
|||||||
config.underline = value
|
config.underline = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dottedLine: Boolean
|
||||||
|
get() = config.dottedLine
|
||||||
|
set(value) {
|
||||||
|
config.dottedLine = value
|
||||||
|
}
|
||||||
|
|
||||||
var paddingBottom: Int
|
var paddingBottom: Int
|
||||||
get() = config.paddingBottom
|
get() = config.paddingBottom
|
||||||
set(value) {
|
set(value) {
|
||||||
@@ -600,6 +606,7 @@ object ReadBookConfig {
|
|||||||
var titleSegFlag: String = "",//分段判断,碰到指定值时分段
|
var titleSegFlag: String = "",//分段判断,碰到指定值时分段
|
||||||
var paragraphIndent: String = " ",//段落缩进
|
var paragraphIndent: String = " ",//段落缩进
|
||||||
var underline: Boolean = false, //下划线
|
var underline: Boolean = false, //下划线
|
||||||
|
var dottedLine: Boolean = false, //虚线
|
||||||
var paddingBottom: Int = 6,
|
var paddingBottom: Int = 6,
|
||||||
var paddingLeft: Int = 16,
|
var paddingLeft: Int = 16,
|
||||||
var paddingRight: Int = 16,
|
var paddingRight: Int = 16,
|
||||||
|
|||||||
@@ -131,6 +131,8 @@ class BgTextConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_bg
|
|||||||
binding.tvName.text = name.ifBlank { "文字" }
|
binding.tvName.text = name.ifBlank { "文字" }
|
||||||
binding.swDarkStatusIcon.isChecked = curStatusIconDark()
|
binding.swDarkStatusIcon.isChecked = curStatusIconDark()
|
||||||
binding.swUnderline.isChecked = underline
|
binding.swUnderline.isChecked = underline
|
||||||
|
binding.swDottedline.isChecked = dottedLine
|
||||||
|
binding.swDottedline.isEnabled = underline
|
||||||
binding.sbBgAlpha.value = ReadBookConfig.bgAlpha.toFloat()
|
binding.sbBgAlpha.value = ReadBookConfig.bgAlpha.toFloat()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,6 +171,15 @@ class BgTextConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_bg
|
|||||||
}
|
}
|
||||||
binding.swUnderline.setOnCheckedChangeListener { _, isChecked ->
|
binding.swUnderline.setOnCheckedChangeListener { _, isChecked ->
|
||||||
underline = 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))
|
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11))
|
||||||
}
|
}
|
||||||
binding.tvTextColor.setOnClickListener {
|
binding.tvTextColor.setOnClickListener {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package io.legado.app.ui.book.read.page.entities
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.graphics.Canvas
|
import android.graphics.Canvas
|
||||||
|
import android.graphics.DashPathEffect
|
||||||
import android.graphics.Paint.FontMetrics
|
import android.graphics.Paint.FontMetrics
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.annotation.Keep
|
import androidx.annotation.Keep
|
||||||
@@ -170,7 +171,7 @@ data class TextLine(
|
|||||||
PaintPool.recycle(underlinePaint)
|
PaintPool.recycle(underlinePaint)
|
||||||
}
|
}
|
||||||
if (ReadBookConfig.underline && !isImage && ReadBook.book?.isImage != true) {
|
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 lineY = height - 1.dpToPx()
|
||||||
|
val paint = ChapterProvider.contentPaint
|
||||||
|
val oldEffect = paint.pathEffect
|
||||||
|
if (dottedLine) {
|
||||||
|
paint.pathEffect = DashPathEffect(floatArrayOf(6f, 6f), 0f)
|
||||||
|
}
|
||||||
canvas.drawLine(
|
canvas.drawLine(
|
||||||
lineStart + indentWidth,
|
lineStart + indentWidth,
|
||||||
lineY,
|
lineY,
|
||||||
lineEnd,
|
lineEnd,
|
||||||
lineY,
|
lineY,
|
||||||
ChapterProvider.contentPaint
|
paint
|
||||||
)
|
)
|
||||||
|
paint.pathEffect = oldEffect
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun checkFastDraw(): Boolean {
|
fun checkFastDraw(): Boolean {
|
||||||
if (!AppConfig.optimizeRender || exceed || !onlyTextColumn || textPage.isMsgPage) {
|
if (!AppConfig.optimizeRender || exceed || !onlyTextColumn || textPage.isMsgPage) {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -135,6 +135,14 @@
|
|||||||
android:text="@string/text_underline"
|
android:text="@string/text_underline"
|
||||||
tools:ignore="TouchTargetSizeCheck" />
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.google.android.material.materialswitch.MaterialSwitch
|
||||||
|
android:id="@+id/sw_dottedline"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="6dp"
|
||||||
|
android:text="@string/text_dottedline"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButtonGroup
|
<com.google.android.material.button.MaterialButtonGroup
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -1325,4 +1325,5 @@
|
|||||||
<string name="sort_new_to_old">从新到旧</string>
|
<string name="sort_new_to_old">从新到旧</string>
|
||||||
<string name="sort_name_asc">名称升序</string>
|
<string name="sort_name_asc">名称升序</string>
|
||||||
<string name="sort_name_desc">名称降序</string>
|
<string name="sort_name_desc">名称降序</string>
|
||||||
|
<string name="text_dottedline">文字下划虚线</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1326,4 +1326,5 @@
|
|||||||
<string name="sort_new_to_old">从新到旧</string>
|
<string name="sort_new_to_old">从新到旧</string>
|
||||||
<string name="sort_name_asc">名称升序</string>
|
<string name="sort_name_asc">名称升序</string>
|
||||||
<string name="sort_name_desc">名称降序</string>
|
<string name="sort_name_desc">名称降序</string>
|
||||||
|
<string name="text_dottedline">文字下划虚线</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user