下划线颜色、高度、虚线空隙比例设置
This commit is contained in:
@@ -38,6 +38,7 @@ import io.legado.app.ui.book.read.config.InfoConfigDialog
|
||||
import io.legado.app.ui.book.read.config.PaddingConfigDialog
|
||||
import io.legado.app.ui.book.read.config.PageKeyDialog
|
||||
import io.legado.app.ui.book.read.config.ShadowSetDialog
|
||||
import io.legado.app.ui.book.read.config.UnderlineConfigDialog
|
||||
import io.legado.app.ui.file.HandleFileContract
|
||||
import io.legado.app.utils.ColorUtils
|
||||
import io.legado.app.utils.FileDoc
|
||||
@@ -150,6 +151,10 @@ abstract class BaseReadBookActivity :
|
||||
showDialogFragment<FontSelectDialog>()
|
||||
}
|
||||
|
||||
fun showUnderlineConfig() {
|
||||
showDialogFragment<UnderlineConfigDialog>()
|
||||
}
|
||||
|
||||
fun showBgTextConfig() {
|
||||
showDialogFragment<BgTextConfigDialog>()
|
||||
}
|
||||
|
||||
@@ -86,6 +86,7 @@ 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
|
||||
import io.legado.app.ui.book.read.config.UnderlineConfigDialog.Companion.U_COLOR
|
||||
import io.legado.app.ui.book.read.page.ContentTextView
|
||||
import io.legado.app.ui.book.read.page.ReadView
|
||||
import io.legado.app.ui.book.read.page.entities.PageDirection
|
||||
@@ -1572,6 +1573,12 @@ class ReadBookActivity : BaseReadBookActivity(),
|
||||
setMenuCurAc(color)
|
||||
postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
|
||||
}
|
||||
|
||||
U_COLOR -> {
|
||||
setUnderlineColor(color)
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(2))
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ 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.dottedLine
|
||||
import io.legado.app.help.config.ReadBookConfig.underline
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.ui.book.read.ReadBookActivity
|
||||
@@ -50,8 +49,6 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
|
||||
private fun initView() = binding.run {
|
||||
binding.btnTextColor.color = ReadBookConfig.durConfig.curTextColor()
|
||||
binding.swUnderline.isChecked = underline
|
||||
binding.swDottedline.isChecked = dottedLine
|
||||
binding.swDottedline.isEnabled = underline
|
||||
dsbTextLetterSpacing.valueFormat = {
|
||||
((it - 50) / 100f).toString()
|
||||
}
|
||||
@@ -136,18 +133,10 @@ class FontConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_font_conf
|
||||
}
|
||||
|
||||
binding.swUnderline.addOnCheckedChangeListener { _, 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.addOnCheckedChangeListener { _, isChecked ->
|
||||
dottedLine = isChecked
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11))
|
||||
callBack2?.showUnderlineConfig()
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
binding.btnDefaultFonts.setOnClickListener {
|
||||
val requireContext = requireContext()
|
||||
alert(titleResource = R.string.system_typeface) {
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
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.DialogUnderlineConfigBinding
|
||||
import io.legado.app.help.config.ReadBookConfig.dottedLine
|
||||
import io.legado.app.help.config.ReadBookConfig.underline
|
||||
import io.legado.app.utils.observeEvent
|
||||
import io.legado.app.utils.postEvent
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
/**
|
||||
* 字体选择对话框
|
||||
*/
|
||||
class UnderlineConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_underline_config) {
|
||||
|
||||
companion object {
|
||||
const val U_COLOR = 810
|
||||
}
|
||||
|
||||
private val binding by viewBinding(DialogUnderlineConfigBinding::bind)
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
observeEvent<ArrayList<Int>>(EventBus.UP_CONFIG) { list ->
|
||||
if (list.contains(2)) {
|
||||
binding.btnUnderlineColor.color = ReadBookConfig.durConfig.curUnderlineColor()
|
||||
}
|
||||
}
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() = binding.run {
|
||||
binding.btnUnderlineColor.color = ReadBookConfig.durConfig.curTextColor()
|
||||
binding.swUnderline.isChecked = underline
|
||||
binding.swDottedline.isChecked = dottedLine
|
||||
binding.swDottedline.isEnabled = underline
|
||||
|
||||
binding.swUnderline.addOnCheckedChangeListener { _, 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.addOnCheckedChangeListener { _, isChecked ->
|
||||
dottedLine = isChecked
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 9, 11))
|
||||
}
|
||||
|
||||
binding.btnDottedLineBlack.apply {
|
||||
progress = ReadBookConfig.durConfig.dottedBase.toInt()
|
||||
onChanged = {
|
||||
ReadBookConfig.durConfig.dottedBase = it.toFloat()
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 8, 10))
|
||||
}
|
||||
}
|
||||
|
||||
binding.btnDottedLineWhile.apply {
|
||||
progress = ReadBookConfig.durConfig.dottedRatio.toInt()
|
||||
onChanged = {
|
||||
ReadBookConfig.durConfig.dottedRatio = it.toFloat()
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(6, 8, 10))
|
||||
}
|
||||
}
|
||||
|
||||
binding.btnUnderlineColor.setOnClickListener {
|
||||
ColorPickerDialog.newBuilder()
|
||||
.setColor(ReadBookConfig.durConfig.curUnderlineColor())
|
||||
.setShowAlphaSlider(false)
|
||||
.setDialogType(ColorPickerDialog.TYPE_CUSTOM)
|
||||
.setDialogId(U_COLOR)
|
||||
.show(requireActivity())
|
||||
}
|
||||
|
||||
binding.btnUnderlineHeight.apply {
|
||||
progress = ReadBookConfig.underlineHeight
|
||||
onChanged = {
|
||||
ReadBookConfig.underlineHeight = it
|
||||
postEvent(EventBus.UP_CONFIG, arrayListOf(8, 9, 6))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -211,16 +211,19 @@ data class TextLine(
|
||||
*/
|
||||
private fun drawUnderline(canvas: Canvas, dottedLine: Boolean) {
|
||||
val paint = ChapterProvider.linePaint
|
||||
paint.pathEffect =
|
||||
if (dottedLine && !AppConfig.isEInkMode)
|
||||
ChapterProvider.dashEffect
|
||||
else
|
||||
null
|
||||
paint.color = ReadBookConfig.durConfig.curUnderlineColor()
|
||||
paint.strokeWidth = ReadBookConfig.underlineHeight.toFloat()
|
||||
paint.pathEffect = if (dottedLine && !AppConfig.isEInkMode)
|
||||
ChapterProvider.dashEffect
|
||||
else
|
||||
null
|
||||
|
||||
val lineY = height - 1.dpToPx()
|
||||
canvas.drawLine(lineStart + indentWidth, lineY, lineEnd, lineY, paint)
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun checkFastDraw(): Boolean {
|
||||
if (!AppConfig.optimizeRender || exceed || !onlyTextColumn || textPage.isMsgPage) {
|
||||
return false
|
||||
|
||||
@@ -66,7 +66,7 @@ object ChapterProvider {
|
||||
}
|
||||
}
|
||||
|
||||
val dashEffect = DashPathEffect(floatArrayOf(dottedBase, dottedRatio), 0f)
|
||||
var dashEffect = DashPathEffect(floatArrayOf(dottedBase, dottedRatio), 0f)
|
||||
|
||||
@JvmStatic
|
||||
var viewWidth = 0
|
||||
@@ -877,6 +877,10 @@ object ChapterProvider {
|
||||
// reviewPaint.textSize = contentPaint.textSize * 0.45f
|
||||
// reviewPaint.textAlign = Paint.Align.CENTER
|
||||
}
|
||||
dashEffect = DashPathEffect(
|
||||
floatArrayOf(ReadBookConfig.durConfig.dottedBase, ReadBookConfig.durConfig.dottedRatio),
|
||||
0f
|
||||
)
|
||||
//间距
|
||||
lineSpacingExtra = ReadBookConfig.lineSpacingExtra / 10f
|
||||
titleLineSpacingExtra = ReadBookConfig.titleLineSpacingExtra / 10f
|
||||
|
||||
Reference in New Issue
Block a user