|
|
@@ -2,8 +2,8 @@ package io.legado.app.ui.book.read.page.entities.column
|
|
|
|
|
|
import android.graphics.Canvas
|
|
|
import android.graphics.Paint
|
|
|
-import android.text.StaticLayout
|
|
|
-import android.text.TextPaint
|
|
|
+import android.graphics.Path
|
|
|
+import io.legado.app.ui.book.read.page.provider.ChapterProvider
|
|
|
|
|
|
/**
|
|
|
* 评论按钮列
|
|
|
@@ -11,74 +11,33 @@ import android.text.TextPaint
|
|
|
data class ReviewColumn(
|
|
|
override var start: Float,
|
|
|
override var end: Float,
|
|
|
- var count: Int = 0
|
|
|
+ val count: Int = 0
|
|
|
) : BaseColumn {
|
|
|
|
|
|
- fun getCountText(): String {
|
|
|
+ val countText by lazy {
|
|
|
if (count > 99) {
|
|
|
- return "99+"
|
|
|
+ return@lazy "99+"
|
|
|
}
|
|
|
- return count.toString()
|
|
|
+ return@lazy count.toString()
|
|
|
}
|
|
|
|
|
|
- fun drawToCanvas(canvas: Canvas, paint: Paint, countPaint: TextPaint, y: Float) {
|
|
|
+ val path by lazy { Path() }
|
|
|
+
|
|
|
+ fun drawToCanvas(canvas: Canvas, baseLine: Float, height: Float) {
|
|
|
if (count == 0) return
|
|
|
- canvas.drawLine(
|
|
|
- start,
|
|
|
- y - paint.textSize * 2 / 5,
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize / 4,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start,
|
|
|
- y - paint.textSize * 0.38F,
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize * 0.55F,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize / 4,
|
|
|
- start + paint.textSize / 6,
|
|
|
- y,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize * 0.55F,
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize * 0.8F,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start + paint.textSize / 6,
|
|
|
- y,
|
|
|
- start + paint.textSize * 1.6F,
|
|
|
- y,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start + paint.textSize / 6,
|
|
|
- y - paint.textSize * 0.8F,
|
|
|
- start + paint.textSize * 1.6F,
|
|
|
- y - paint.textSize * 0.8F,
|
|
|
- paint
|
|
|
- )
|
|
|
- canvas.drawLine(
|
|
|
- start + paint.textSize * 1.6F,
|
|
|
- y - paint.textSize * 0.8F,
|
|
|
- start + paint.textSize * 1.6F,
|
|
|
- y,
|
|
|
- paint
|
|
|
- )
|
|
|
- val text = getCountText()
|
|
|
- val textWidth = StaticLayout.getDesiredWidth(getCountText(), countPaint)
|
|
|
+ path.moveTo(start, baseLine - height / 2)
|
|
|
+ path.lineTo(start + height / 6, baseLine - height)
|
|
|
+ path.lineTo(end, baseLine - height)
|
|
|
+ path.lineTo(end, baseLine)
|
|
|
+ path.lineTo(start + height / 6, baseLine)
|
|
|
+ path.close()
|
|
|
+ ChapterProvider.reviewPaint.style = Paint.Style.STROKE
|
|
|
+ canvas.drawPath(path, ChapterProvider.reviewPaint)
|
|
|
canvas.drawText(
|
|
|
- text,
|
|
|
- start + paint.textSize * 0.87F - textWidth / 2,
|
|
|
- y - paint.textSize / 6,
|
|
|
- countPaint
|
|
|
+ countText,
|
|
|
+ (start + end) / 2,
|
|
|
+ baseLine - height / 6,
|
|
|
+ ChapterProvider.reviewPaint
|
|
|
)
|
|
|
}
|
|
|
|