pull/1649/head
kunfei 3 years ago
parent f1cea348e9
commit ea3550a622
  1. 4
      app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
  2. 21
      app/src/main/java/io/legado/app/ui/widget/BatteryView.kt

@ -200,14 +200,14 @@ class PageView(context: Context) : FrameLayout(context) {
fun upBattery(battery: Int) { fun upBattery(battery: Int) {
this.battery = battery this.battery = battery
tvBattery?.setTextAndBattery(battery = battery) tvBattery?.setBattery(battery)
upTimeBattery() upTimeBattery()
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun upTimeBattery() { private fun upTimeBattery() {
val time = timeFormat.format(Date(System.currentTimeMillis())) val time = timeFormat.format(Date(System.currentTimeMillis()))
tvTimeBattery?.setTextAndBattery(time, battery) tvTimeBattery?.setBattery(battery, time)
} }
fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) { fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) {

@ -53,28 +53,39 @@ class BatteryView @JvmOverloads constructor(
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
fun setTextAndBattery(text: String = "", battery: Int = 0) { fun setBattery(battery: Int, text: String? = null) {
this.battery = battery this.battery = battery
if (isBattery) { if (isBattery) {
batteryWidth = StaticLayout.getDesiredWidth(battery.toString(), paint).toInt() batteryWidth = StaticLayout.getDesiredWidth(battery.toString(), paint).toInt()
} }
if (text.isNullOrEmpty()) {
setText(battery.toString())
} else {
setText("$text $battery") setText("$text $battery")
} }
}
override fun onDraw(canvas: Canvas) { override fun onDraw(canvas: Canvas) {
super.onDraw(canvas) super.onDraw(canvas)
if (!isBattery) return if (!isBattery) return
layout.getLineBounds(0, outFrame)
val batteryStart = layout
.getPrimaryHorizontal(text.length - battery.toString().length)
.toInt() + 3.dp
val batteryEnd = layout
.getSecondaryHorizontal(text.length)
.toInt() + 6.dp
outFrame.set( outFrame.set(
width - 6.dp - batteryWidth, batteryStart,
1.dp, 1.dp,
width - 3.dp, batteryEnd,
height - 1.dp height - 1.dp
) )
val dj = (outFrame.bottom - outFrame.top) / 3 val dj = (outFrame.bottom - outFrame.top) / 3
polar.set( polar.set(
outFrame.right, batteryEnd,
outFrame.top + dj, outFrame.top + dj,
width - 1.dp, batteryEnd + 2.dp,
outFrame.bottom - dj outFrame.bottom - dj
) )
batteryPaint.style = Paint.Style.STROKE batteryPaint.style = Paint.Style.STROKE

Loading…
Cancel
Save