diff --git a/app/build.gradle b/app/build.gradle
index f23046bbb..dfd2b732e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -153,7 +153,7 @@ dependencies {
implementation 'com.jeremyliao:live-event-bus-x:1.5.7'
//协程
- def coroutines_version = '1.3.3'
+ def coroutines_version = '1.3.7'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
diff --git a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
index d19f03139..daf17da51 100644
--- a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
+++ b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt
@@ -147,7 +147,7 @@ object ReadBookConfig {
private val config get() = if (shareLayout) getConfig(5) else durConfig
- var textBold: Boolean
+ var textBold: Int
get() = config.textBold
set(value) {
config.textBold = value
@@ -294,7 +294,7 @@ object ReadBookConfig {
private var darkStatusIconNight: Boolean = false,//晚上是否暗色状态栏
private var textColor: String = "#3E3D3B",//白天文字颜色
private var textColorNight: String = "#ADADAD",//夜间文字颜色
- var textBold: Boolean = false,//是否粗体字
+ var textBold: Int = 0,//是否粗体字 0:正常, 1:粗体, 2:细体
var textSize: Int = 20,//文字大小
var letterSpacing: Float = 0.5f,//字间距
var lineSpacingExtra: Int = 12,//行间距
diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt
index 4b196ec48..d008ad7e9 100644
--- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt
+++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt
@@ -1,11 +1,13 @@
package io.legado.app.service.help
import androidx.lifecycle.MutableLiveData
+import com.hankcs.hanlp.HanLP
import io.legado.app.App
import io.legado.app.R
import io.legado.app.constant.BookType
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter
+import io.legado.app.help.AppConfig
import io.legado.app.help.BookHelp
import io.legado.app.help.IntentDataHelp
import io.legado.app.help.coroutine.Coroutine
@@ -292,6 +294,11 @@ object ReadBook {
) {
Coroutine.async {
if (chapter.index in durChapterIndex - 1..durChapterIndex + 1) {
+ chapter.title = when (AppConfig.chineseConverterType) {
+ 1 -> HanLP.convertToSimplifiedChinese(chapter.title)
+ 2 -> HanLP.convertToTraditionalChinese(chapter.title)
+ else -> chapter.title
+ }
val contents = BookHelp.disposeContent(
chapter.title,
book!!.name,
diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
index 19cad6738..38e96af50 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt
@@ -103,9 +103,7 @@ class ReadStyleDialog : DialogFragment(), FontSelectDialog.CallBack {
tv_title_mode.onClick {
showTitleConfig()
}
- tv_text_bold.onClick {
- ReadBookConfig.textBold = !ReadBookConfig.textBold
- tv_text_bold.isSelected = ReadBookConfig.textBold
+ text_font_weight_converter.onChanged {
postEvent(EventBus.UP_CONFIG, true)
}
tv_text_font.onClick {
@@ -215,7 +213,6 @@ class ReadStyleDialog : DialogFragment(), FontSelectDialog.CallBack {
private fun upStyle() {
ReadBookConfig.let {
- tv_text_bold.isSelected = it.textBold
dsb_text_size.progress = it.textSize - 5
dsb_text_letter_spacing.progress = (it.letterSpacing * 100).toInt() + 50
dsb_line_size.progress = it.lineSpacingExtra
diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/TextFontWeightConverter.kt b/app/src/main/java/io/legado/app/ui/book/read/config/TextFontWeightConverter.kt
new file mode 100644
index 000000000..12f5243fa
--- /dev/null
+++ b/app/src/main/java/io/legado/app/ui/book/read/config/TextFontWeightConverter.kt
@@ -0,0 +1,55 @@
+package io.legado.app.ui.book.read.config
+
+import android.content.Context
+import android.text.Spannable
+import android.text.SpannableString
+import android.text.style.ForegroundColorSpan
+import android.util.AttributeSet
+import io.legado.app.R
+import io.legado.app.help.AppConfig
+import io.legado.app.help.ReadBookConfig
+import io.legado.app.lib.dialogs.alert
+import io.legado.app.lib.theme.accentColor
+import io.legado.app.ui.widget.text.StrokeTextView
+import org.jetbrains.anko.sdk27.listeners.onClick
+
+class TextFontWeightConverter(context: Context, attrs: AttributeSet?) : StrokeTextView(context, attrs) {
+
+ private val spannableString = SpannableString("中/粗/细")
+ private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor)
+ private var onChanged: (() -> Unit)? = null
+
+ init {
+ text = spannableString
+ if (!isInEditMode) {
+ upUi(ReadBookConfig.textBold)
+ }
+ onClick {
+ selectType()
+ }
+ }
+
+ private fun upUi(type: Int) {
+ spannableString.removeSpan(enabledSpan)
+ when (type) {
+ 0 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
+ 1 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
+ 2 -> spannableString.setSpan(enabledSpan, 4, 5, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
+ }
+ text = spannableString
+ }
+
+ private fun selectType() {
+ context.alert(titleResource = R.string.text_font_weight_converter) {
+ items(context.resources.getStringArray(R.array.text_font_weight).toList()) { _, i ->
+ ReadBookConfig.textBold = i
+ upUi(i)
+ onChanged?.invoke()
+ }
+ }.show()
+ }
+
+ fun onChanged(unit: () -> Unit) {
+ onChanged = unit
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ChapterProvider.kt
index b988ba782..15f3ac23c 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/ChapterProvider.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/ChapterProvider.kt
@@ -6,6 +6,7 @@ import android.text.Layout
import android.text.StaticLayout
import android.text.TextPaint
import android.text.TextUtils
+import com.hankcs.hanlp.HanLP
import io.legado.app.App
import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.BookChapter
@@ -78,6 +79,7 @@ object ChapterProvider {
item.title = bookChapter.title
item.upLinesPosition()
}
+
return TextChapter(
bookChapter.index,
bookChapter.title,
@@ -270,23 +272,37 @@ object ChapterProvider {
App.INSTANCE.removePref(PreferKey.readBookFont)
Typeface.SANS_SERIF
}
+ // 字体统一处理
+ val bold = Typeface.create(typeface, Typeface.BOLD)
+ val normal = Typeface.create(typeface, Typeface.NORMAL)
+ val (titleFont, textFont) = when (ReadBookConfig.textBold) {
+ 1 -> {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
+ Pair(Typeface.create(typeface, 900, false), bold)
+ else
+ Pair(bold, bold)
+ }
+ 2 -> {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
+ Pair(normal, Typeface.create(typeface, 300, false))
+ else
+ Pair(normal, normal)
+ }
+ else -> Pair(bold, normal)
+ }
+
//标题
titlePaint = TextPaint()
titlePaint.color = ReadBookConfig.durConfig.textColor()
titlePaint.letterSpacing = ReadBookConfig.letterSpacing
- titlePaint.typeface = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- Typeface.create(typeface, if (ReadBookConfig.textBold) 900 else 700, false)
- } else {
- Typeface.create(typeface, Typeface.BOLD)
- }
+ titlePaint.typeface = titleFont
titlePaint.textSize = with(ReadBookConfig) { textSize + titleSize }.sp.toFloat()
titlePaint.isAntiAlias = true
//正文
contentPaint = TextPaint()
contentPaint.color = ReadBookConfig.durConfig.textColor()
contentPaint.letterSpacing = ReadBookConfig.letterSpacing
- val style = if (ReadBookConfig.textBold) Typeface.BOLD else Typeface.NORMAL
- contentPaint.typeface = Typeface.create(typeface, style)
+ contentPaint.typeface = textFont
contentPaint.textSize = ReadBookConfig.textSize.sp.toFloat()
contentPaint.isAntiAlias = true
//间距
diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt
index 8058c0a04..8cf679114 100644
--- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt
+++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt
@@ -207,11 +207,7 @@ class ContentView(context: Context) : FrameLayout(context) {
@SuppressLint("SetTextI18n")
fun setProgress(textPage: TextPage) = textPage.apply {
- val title = when (AppConfig.chineseConverterType) {
- 1 -> HanLP.convertToSimplifiedChinese(textPage.title)
- 2 -> HanLP.convertToTraditionalChinese(textPage.title)
- else -> textPage.title
- }
+ val title = textPage.title
tvTitle?.text = title
tvPage?.text = "${index.plus(1)}/$pageSize"
tvTotalProgress?.text = readProgress
diff --git a/app/src/main/res/layout/dialog_read_book_style.xml b/app/src/main/res/layout/dialog_read_book_style.xml
index 9436e0f0a..b57705513 100644
--- a/app/src/main/res/layout/dialog_read_book_style.xml
+++ b/app/src/main/res/layout/dialog_read_book_style.xml
@@ -37,15 +37,14 @@
android:layout_height="wrap_content"
android:layout_weight="1" />
-
diff --git a/app/src/main/res/values-zh-rHK/arrays.xml b/app/src/main/res/values-zh-rHK/arrays.xml
index ebe6c25dd..b99ad1992 100644
--- a/app/src/main/res/values-zh-rHK/arrays.xml
+++ b/app/src/main/res/values-zh-rHK/arrays.xml
@@ -49,4 +49,9 @@
- 系統等寬字體
+
+ - 正常
+ - 粗體
+ - 細體
+
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 7cb27fd34..c439e23af 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -694,4 +694,5 @@
文字兩端對齊
自動翻頁速度
地址排序
+ 文章字體轉換
diff --git a/app/src/main/res/values-zh-rTW/arrays.xml b/app/src/main/res/values-zh-rTW/arrays.xml
index 84dc2f886..4efd0c56f 100644
--- a/app/src/main/res/values-zh-rTW/arrays.xml
+++ b/app/src/main/res/values-zh-rTW/arrays.xml
@@ -106,4 +106,9 @@
- 頁數及進度
+
+ - 正常
+ - 粗體
+ - 細體
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 00bf07e51..50bb909ce 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -696,5 +696,6 @@
文字兩端對齊
自動翻頁速度
地址排序
+ 文章字體轉換
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index b1046096f..e8a99ff2a 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -106,4 +106,10 @@
- 页数及进度
+
+ - 正常
+ - 粗体
+ - 细体
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bcf8f247a..b234284fa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -676,6 +676,7 @@
隐藏页眉
隐藏页脚
切换布局
+ 文章字重切换
主色调