优化
This commit is contained in:
@@ -137,9 +137,6 @@ object ChapterProvider {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
var visibleRect = RectF()
|
var visibleRect = RectF()
|
||||||
|
|
||||||
private val titleMeasureHelper = TextMeasure(titlePaint)
|
|
||||||
private val contentMeasureHelper = TextMeasure(contentPaint)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
upStyle()
|
upStyle()
|
||||||
}
|
}
|
||||||
@@ -169,7 +166,6 @@ object ChapterProvider {
|
|||||||
textPages,
|
textPages,
|
||||||
stringBuilder,
|
stringBuilder,
|
||||||
titlePaint,
|
titlePaint,
|
||||||
titleMeasureHelper,
|
|
||||||
titlePaintTextHeight,
|
titlePaintTextHeight,
|
||||||
titlePaintFontMetrics,
|
titlePaintFontMetrics,
|
||||||
isTitle = true,
|
isTitle = true,
|
||||||
@@ -207,7 +203,6 @@ object ChapterProvider {
|
|||||||
textPages,
|
textPages,
|
||||||
stringBuilder,
|
stringBuilder,
|
||||||
contentPaint,
|
contentPaint,
|
||||||
contentMeasureHelper,
|
|
||||||
contentPaintTextHeight,
|
contentPaintTextHeight,
|
||||||
contentPaintFontMetrics,
|
contentPaintFontMetrics,
|
||||||
srcList = srcList
|
srcList = srcList
|
||||||
@@ -229,7 +224,6 @@ object ChapterProvider {
|
|||||||
textPages,
|
textPages,
|
||||||
stringBuilder,
|
stringBuilder,
|
||||||
contentPaint,
|
contentPaint,
|
||||||
contentMeasureHelper,
|
|
||||||
contentPaintTextHeight,
|
contentPaintTextHeight,
|
||||||
contentPaintFontMetrics
|
contentPaintFontMetrics
|
||||||
).let {
|
).let {
|
||||||
@@ -261,7 +255,6 @@ object ChapterProvider {
|
|||||||
textPages,
|
textPages,
|
||||||
stringBuilder,
|
stringBuilder,
|
||||||
contentPaint,
|
contentPaint,
|
||||||
contentMeasureHelper,
|
|
||||||
contentPaintTextHeight,
|
contentPaintTextHeight,
|
||||||
contentPaintFontMetrics
|
contentPaintFontMetrics
|
||||||
).let {
|
).let {
|
||||||
@@ -403,7 +396,6 @@ object ChapterProvider {
|
|||||||
textPages: ArrayList<TextPage>,
|
textPages: ArrayList<TextPage>,
|
||||||
stringBuilder: StringBuilder,
|
stringBuilder: StringBuilder,
|
||||||
textPaint: TextPaint,
|
textPaint: TextPaint,
|
||||||
measureHelper: TextMeasure,
|
|
||||||
textHeight: Float,
|
textHeight: Float,
|
||||||
fontMetrics: FontMetrics,
|
fontMetrics: FontMetrics,
|
||||||
isTitle: Boolean = false,
|
isTitle: Boolean = false,
|
||||||
@@ -413,7 +405,7 @@ object ChapterProvider {
|
|||||||
): Pair<Int, Float> {
|
): Pair<Int, Float> {
|
||||||
var absStartX = x
|
var absStartX = x
|
||||||
val layout = if (ReadBookConfig.useZhLayout) {
|
val layout = if (ReadBookConfig.useZhLayout) {
|
||||||
ZhLayout(text, textPaint, visibleWidth, measureHelper)
|
ZhLayout(text, textPaint, visibleWidth)
|
||||||
} else {
|
} else {
|
||||||
StaticLayout(text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true)
|
StaticLayout(text, textPaint, visibleWidth, Layout.Alignment.ALIGN_NORMAL, 0f, 0f, true)
|
||||||
}
|
}
|
||||||
@@ -471,7 +463,7 @@ object ChapterProvider {
|
|||||||
val lineStart = layout.getLineStart(lineIndex)
|
val lineStart = layout.getLineStart(lineIndex)
|
||||||
val lineEnd = layout.getLineEnd(lineIndex)
|
val lineEnd = layout.getLineEnd(lineIndex)
|
||||||
val lineText = text.substring(lineStart, lineEnd)
|
val lineText = text.substring(lineStart, lineEnd)
|
||||||
val (words, widths) = measureHelper.measureTextSplit(lineText)
|
val (words, widths) = measureTextSplit(lineText, textPaint)
|
||||||
val desiredWidth = widths.fastSum()
|
val desiredWidth = widths.fastSum()
|
||||||
when {
|
when {
|
||||||
lineIndex == 0 && layout.lineCount > 1 && !isTitle -> {
|
lineIndex == 0 && layout.lineCount > 1 && !isTitle -> {
|
||||||
@@ -751,6 +743,28 @@ object ChapterProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun measureTextSplit(
|
||||||
|
text: String,
|
||||||
|
paint: TextPaint
|
||||||
|
): Pair<ArrayList<String>, ArrayList<Float>> {
|
||||||
|
val length = text.length
|
||||||
|
val widthsArray = FloatArray(length)
|
||||||
|
paint.getTextWidths(text, widthsArray)
|
||||||
|
val clusterCount = widthsArray.count { it > 0f }
|
||||||
|
val widths = ArrayList<Float>(clusterCount)
|
||||||
|
val stringList = ArrayList<String>(clusterCount)
|
||||||
|
var i = 0
|
||||||
|
while (i < length) {
|
||||||
|
val clusterBaseIndex = i++
|
||||||
|
widths.add(widthsArray[clusterBaseIndex])
|
||||||
|
while (i < length && widthsArray[i] == 0f) {
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
stringList.add(text.substring(clusterBaseIndex, i))
|
||||||
|
}
|
||||||
|
return stringList to widths
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新样式
|
* 更新样式
|
||||||
*/
|
*/
|
||||||
@@ -759,8 +773,6 @@ object ChapterProvider {
|
|||||||
getPaints(typeface).let {
|
getPaints(typeface).let {
|
||||||
titlePaint = it.first
|
titlePaint = it.first
|
||||||
contentPaint = it.second
|
contentPaint = it.second
|
||||||
titleMeasureHelper.setPaint(titlePaint)
|
|
||||||
contentMeasureHelper.setPaint(contentPaint)
|
|
||||||
// reviewPaint.color = contentPaint.color
|
// reviewPaint.color = contentPaint.color
|
||||||
// reviewPaint.textSize = contentPaint.textSize * 0.45f
|
// reviewPaint.textSize = contentPaint.textSize * 0.45f
|
||||||
// reviewPaint.textAlign = Paint.Align.CENTER
|
// reviewPaint.textAlign = Paint.Align.CENTER
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ class ZhLayout(
|
|||||||
text: CharSequence,
|
text: CharSequence,
|
||||||
textPaint: TextPaint,
|
textPaint: TextPaint,
|
||||||
width: Int,
|
width: Int,
|
||||||
measureHelper: TextMeasure,
|
|
||||||
) : Layout(text, textPaint, width, Alignment.ALIGN_NORMAL, 0f, 0f) {
|
) : Layout(text, textPaint, width, Alignment.ALIGN_NORMAL, 0f, 0f) {
|
||||||
companion object {
|
companion object {
|
||||||
private val postPanc = hashSetOf(
|
private val postPanc = hashSetOf(
|
||||||
@@ -50,7 +49,7 @@ class ZhLayout(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
var line = 0
|
var line = 0
|
||||||
val (words, widths) = measureHelper.measureTextSplit(text as String)
|
val (words, widths) = ChapterProvider.measureTextSplit(text as String, textPaint)
|
||||||
var lineW = 0f
|
var lineW = 0f
|
||||||
var cwPre = 0f
|
var cwPre = 0f
|
||||||
var length = 0
|
var length = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user