mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -2,4 +2,4 @@
|
||||
* 本应用网络同步和备份采用webDav协议,由用户自己提供同步服务.
|
||||
* 存储权限用来打开本地文件和本地备份恢复.
|
||||
* 其它一些权限是Google Firebase需要.
|
||||
* 本应用为开源软件,使用中发生任何问题由用户自己承担.
|
||||
* 本应用为开源软件,内置js引擎,因书源调用js发生的任何问题由用户自行承担.
|
||||
@@ -156,7 +156,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at
|
||||
private fun drawUnderline(canvas: Canvas, textLine: TextLine, relativeOffset: Float) {
|
||||
val lineY = relativeOffset + textLine.lineBottom - 1.dpToPx()
|
||||
canvas.drawLine(
|
||||
textLine.lineStart,
|
||||
textLine.lineStart + textLine.indentWidth,
|
||||
lineY,
|
||||
textLine.lineEnd,
|
||||
lineY,
|
||||
|
||||
@@ -17,6 +17,7 @@ data class TextLine(
|
||||
var lineTop: Float = 0f,
|
||||
var lineBase: Float = 0f,
|
||||
var lineBottom: Float = 0f,
|
||||
var indentWidth: Float = 0f,
|
||||
val isTitle: Boolean = false,
|
||||
var isParagraphEnd: Boolean = false,
|
||||
var isReadAloud: Boolean = false,
|
||||
|
||||
@@ -377,8 +377,8 @@ object ChapterProvider {
|
||||
0f
|
||||
}
|
||||
addCharsToLineNatural(
|
||||
book, absStartX, textLine, words.toStringArray(),
|
||||
textPaint, startX, srcList
|
||||
book, absStartX, textLine, words.toStringArray(), textPaint,
|
||||
startX, !isTitle && lineIndex == 0, srcList
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
@@ -390,7 +390,7 @@ object ChapterProvider {
|
||||
val startX = (visibleWidth - layout.getLineWidth(lineIndex)) / 2
|
||||
addCharsToLineNatural(
|
||||
book, absStartX, textLine, words.toStringArray(),
|
||||
textPaint, startX, srcList
|
||||
textPaint, startX, false, srcList
|
||||
)
|
||||
} else {
|
||||
//中间行
|
||||
@@ -430,7 +430,10 @@ object ChapterProvider {
|
||||
) {
|
||||
var x = 0f
|
||||
if (!ReadBookConfig.textFullJustify) {
|
||||
addCharsToLineNatural(book, absStartX, textLine, words, textPaint, x, srcList)
|
||||
addCharsToLineNatural(
|
||||
book, absStartX, textLine, words, textPaint,
|
||||
x, true, srcList
|
||||
)
|
||||
return
|
||||
}
|
||||
val bodyIndent = ReadBookConfig.paragraphIndent
|
||||
@@ -445,6 +448,7 @@ object ChapterProvider {
|
||||
)
|
||||
)
|
||||
x = x1
|
||||
textLine.indentWidth = x
|
||||
}
|
||||
if (words.size > bodyIndent.length) {
|
||||
val words1 = words.copyOfRange(bodyIndent.length, words.size)
|
||||
@@ -471,7 +475,10 @@ object ChapterProvider {
|
||||
srcList: LinkedList<String>?
|
||||
) {
|
||||
if (!ReadBookConfig.textFullJustify) {
|
||||
addCharsToLineNatural(book, absStartX, textLine, words, textPaint, startX, srcList)
|
||||
addCharsToLineNatural(
|
||||
book, absStartX, textLine, words, textPaint,
|
||||
startX, false, srcList
|
||||
)
|
||||
return
|
||||
}
|
||||
val residualWidth = visibleWidth - desiredWidth
|
||||
@@ -519,14 +526,19 @@ object ChapterProvider {
|
||||
words: Array<String>,
|
||||
textPaint: TextPaint,
|
||||
startX: Float,
|
||||
hasIndent: Boolean,
|
||||
srcList: LinkedList<String>?
|
||||
) {
|
||||
val indentLength = ReadBookConfig.paragraphIndent.length
|
||||
var x = startX
|
||||
words.forEachIndexed { index, char ->
|
||||
val cw = StaticLayout.getDesiredWidth(char, textPaint)
|
||||
val x1 = x + cw
|
||||
addCharToLine(book, absStartX, textLine, char, x, x1, index + 1 == words.size, srcList)
|
||||
x = x1
|
||||
if (hasIndent && index == indentLength - 1) {
|
||||
textLine.indentWidth = x
|
||||
}
|
||||
}
|
||||
exceed(absStartX, textLine, words)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user