优化
This commit is contained in:
@@ -154,7 +154,15 @@ object ReadBookConfig {
|
||||
appCtx.putPrefBoolean(PreferKey.shareLayout, value)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 两端对齐
|
||||
*/
|
||||
val textFullJustify get() = appCtx.getPrefBoolean(PreferKey.textFullJustify, true)
|
||||
|
||||
/**
|
||||
* 底部对齐
|
||||
*/
|
||||
val textBottomJustify get() = appCtx.getPrefBoolean(PreferKey.textBottomJustify, true)
|
||||
var hideStatusBar = appCtx.getPrefBoolean(PreferKey.hideStatusBar)
|
||||
var hideNavigationBar = appCtx.getPrefBoolean(PreferKey.hideNavigationBar)
|
||||
|
||||
@@ -300,10 +300,11 @@ object ChapterProvider {
|
||||
srcList: LinkedList<String>? = null
|
||||
): Pair<Int, Float> {
|
||||
var absStartX = x
|
||||
val layout = if (ReadBookConfig.useZhLayout) ZhLayout(text, textPaint, visibleWidth)
|
||||
else StaticLayout(
|
||||
text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true
|
||||
)
|
||||
val layout = if (ReadBookConfig.useZhLayout) {
|
||||
ZhLayout(text, textPaint, visibleWidth)
|
||||
} else {
|
||||
StaticLayout(text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true)
|
||||
}
|
||||
var durY = when {
|
||||
//标题y轴居中
|
||||
isTitleWithNoContent && textPages.size == 1 -> {
|
||||
@@ -375,7 +376,7 @@ object ChapterProvider {
|
||||
} else {
|
||||
0f
|
||||
}
|
||||
addCharsToLineLast(
|
||||
addCharsToLineNatural(
|
||||
book, absStartX, textLine, words.toStringArray(),
|
||||
textPaint, startX, srcList
|
||||
)
|
||||
@@ -416,7 +417,7 @@ object ChapterProvider {
|
||||
) {
|
||||
var x = 0f
|
||||
if (!ReadBookConfig.textFullJustify) {
|
||||
addCharsToLineLast(book, absStartX, textLine, words, textPaint, x, srcList)
|
||||
addCharsToLineNatural(book, absStartX, textLine, words, textPaint, x, srcList)
|
||||
return
|
||||
}
|
||||
val bodyIndent = ReadBookConfig.paragraphIndent
|
||||
@@ -454,7 +455,7 @@ object ChapterProvider {
|
||||
srcList: LinkedList<String>?
|
||||
) {
|
||||
if (!ReadBookConfig.textFullJustify) {
|
||||
addCharsToLineLast(book, absStartX, textLine, words, textPaint, startX, srcList)
|
||||
addCharsToLineNatural(book, absStartX, textLine, words, textPaint, startX, srcList)
|
||||
return
|
||||
}
|
||||
val gapCount: Int = words.lastIndex
|
||||
@@ -470,9 +471,9 @@ object ChapterProvider {
|
||||
}
|
||||
|
||||
/**
|
||||
* 最后一行,自然排列
|
||||
* 自然排列
|
||||
*/
|
||||
private suspend fun addCharsToLineLast(
|
||||
private suspend fun addCharsToLineNatural(
|
||||
book: Book,
|
||||
absStartX: Int,
|
||||
textLine: TextLine,
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.math.max
|
||||
* */
|
||||
@Suppress("MemberVisibilityCanBePrivate", "unused")
|
||||
class ZhLayout(
|
||||
text: String,
|
||||
text: CharSequence,
|
||||
textPaint: TextPaint,
|
||||
width: Int
|
||||
) : Layout(text, textPaint, width, Alignment.ALIGN_NORMAL, 0f, 0f) {
|
||||
|
||||
@@ -8,6 +8,8 @@ import android.net.Uri
|
||||
import android.text.Editable
|
||||
import io.legado.app.constant.AppPattern.dataUriRegex
|
||||
import java.io.File
|
||||
import java.lang.Character.codePointCount
|
||||
import java.lang.Character.offsetByCodePoints
|
||||
import java.util.*
|
||||
|
||||
fun String?.safeTrim() = if (this.isNullOrBlank()) null else this.trim()
|
||||
@@ -100,12 +102,12 @@ fun String?.memorySize(): Int {
|
||||
/**
|
||||
* 将字符串拆分为单个字符,包含emoji
|
||||
*/
|
||||
fun String.toStringArray(): Array<String> {
|
||||
fun CharSequence.toStringArray(): Array<String> {
|
||||
var codePointIndex = 0
|
||||
return try {
|
||||
Array(codePointCount(0, length)) {
|
||||
Array(codePointCount(this, 0, length)) {
|
||||
val start = codePointIndex
|
||||
codePointIndex = offsetByCodePoints(start, 1)
|
||||
codePointIndex = offsetByCodePoints(this, start, 1)
|
||||
substring(start, codePointIndex)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
||||
Reference in New Issue
Block a user