diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt index 5941905e9..ff9cb919a 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt @@ -63,11 +63,9 @@ class PageView(context: Context) : FrameLayout(context) { val tipColor = with(ReadTipConfig) { if (tipColor == 0) it.textColor else tipColor } - bvHeaderLeft.setColor(tipColor) tvHeaderLeft.setColor(tipColor) tvHeaderMiddle.setColor(tipColor) tvHeaderRight.setColor(tipColor) - bvFooterLeft.setColor(tipColor) tvFooterLeft.setColor(tipColor) tvFooterMiddle.setColor(tipColor) tvFooterRight.setColor(tipColor) @@ -101,15 +99,17 @@ class PageView(context: Context) : FrameLayout(context) { } private fun upTipStyle() = binding.run { + tvHeaderLeft.tag = null + tvHeaderMiddle.tag = null + tvHeaderRight.tag = null + tvFooterLeft.tag = null + tvFooterMiddle.tag = null + tvFooterRight.tag = null ReadTipConfig.apply { - tvHeaderLeft.isInvisible = tipHeaderLeft != chapterTitle - bvHeaderLeft.isInvisible = - tipHeaderLeft == none || !tvHeaderLeft.isInvisible + tvHeaderLeft.isGone = tipHeaderLeft == none tvHeaderRight.isGone = tipHeaderRight == none tvHeaderMiddle.isGone = tipHeaderMiddle == none - tvFooterLeft.isInvisible = tipFooterLeft != chapterTitle - bvFooterLeft.isInvisible = - tipFooterLeft == none || !tvFooterLeft.isInvisible + tvFooterLeft.isInvisible = tipFooterLeft == none tvFooterRight.isGone = tipFooterRight == none tvFooterMiddle.isGone = tipFooterMiddle == none llHeader.isGone = when (headerMode) { @@ -122,63 +122,61 @@ class PageView(context: Context) : FrameLayout(context) { else -> false } } - tvTitle = getTipView(ReadTipConfig.chapterTitle) - tvTitle?.apply { + tvTitle = getTipView(ReadTipConfig.chapterTitle)?.apply { + tag = ReadTipConfig.chapterTitle isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvTime = getTipView(ReadTipConfig.time) - tvTime?.apply { + tvTime = getTipView(ReadTipConfig.time)?.apply { + tag = ReadTipConfig.time isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvBattery = getTipView(ReadTipConfig.battery) - tvBattery?.apply { + tvBattery = getTipView(ReadTipConfig.battery)?.apply { + tag = ReadTipConfig.battery isBattery = true - textSize = 10f + textSize = 11f } - tvPage = getTipView(ReadTipConfig.page) - tvPage?.apply { + tvPage = getTipView(ReadTipConfig.page)?.apply { + tag = ReadTipConfig.page isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvTotalProgress = getTipView(ReadTipConfig.totalProgress) - tvTotalProgress?.apply { + tvTotalProgress = getTipView(ReadTipConfig.totalProgress)?.apply { + tag = ReadTipConfig.totalProgress isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvPageAndTotal = getTipView(ReadTipConfig.pageAndTotal) - tvPageAndTotal?.apply { + tvPageAndTotal = getTipView(ReadTipConfig.pageAndTotal)?.apply { + tag = ReadTipConfig.pageAndTotal isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvBookName = getTipView(ReadTipConfig.bookName) - tvBookName?.apply { + tvBookName = getTipView(ReadTipConfig.bookName)?.apply { + tag = ReadTipConfig.bookName isBattery = false typeface = ChapterProvider.typeface textSize = 12f } - tvTimeBattery = getTipView(ReadTipConfig.timeBattery) - tvTimeBattery?.apply { - isBattery = false + tvTimeBattery = getTipView(ReadTipConfig.timeBattery)?.apply { + tag = ReadTipConfig.timeBattery + isBattery = true typeface = ChapterProvider.typeface - textSize = 12f + textSize = 11f } } private fun getTipView(tip: Int): BatteryView? = binding.run { return when (tip) { - ReadTipConfig.tipHeaderLeft -> - if (tip == ReadTipConfig.chapterTitle) tvHeaderLeft else bvHeaderLeft + ReadTipConfig.tipHeaderLeft -> tvHeaderLeft ReadTipConfig.tipHeaderMiddle -> tvHeaderMiddle ReadTipConfig.tipHeaderRight -> tvHeaderRight - ReadTipConfig.tipFooterLeft -> - if (tip == ReadTipConfig.chapterTitle) tvFooterLeft else bvFooterLeft + ReadTipConfig.tipFooterLeft -> tvFooterLeft ReadTipConfig.tipFooterMiddle -> tvFooterMiddle ReadTipConfig.tipFooterRight -> tvFooterRight else -> null @@ -202,16 +200,14 @@ class PageView(context: Context) : FrameLayout(context) { fun upBattery(battery: Int) { this.battery = battery - tvBattery?.setBattery(battery) + tvBattery?.setTextAndBattery(battery = battery) upTimeBattery() } @SuppressLint("SetTextI18n") private fun upTimeBattery() { - tvTimeBattery?.let { - val time = timeFormat.format(Date(System.currentTimeMillis())) - it.text = "$time $battery%" - } + val time = timeFormat.format(Date(System.currentTimeMillis())) + tvTimeBattery?.setTextAndBattery(time, battery) } fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) { diff --git a/app/src/main/java/io/legado/app/ui/widget/BatteryView.kt b/app/src/main/java/io/legado/app/ui/widget/BatteryView.kt index 2b2cddb71..e076ff0ab 100644 --- a/app/src/main/java/io/legado/app/ui/widget/BatteryView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/BatteryView.kt @@ -6,6 +6,7 @@ import android.graphics.Canvas import android.graphics.Paint import android.graphics.Rect import android.graphics.Typeface +import android.text.StaticLayout import android.util.AttributeSet import androidx.annotation.ColorInt import androidx.appcompat.widget.AppCompatTextView @@ -29,6 +30,8 @@ class BatteryView @JvmOverloads constructor( postInvalidate() } } + private var battery: Int = 0 + private var batteryWidth = 0 init { setPadding(4.dp, 2.dp, 6.dp, 2.dp) @@ -50,15 +53,19 @@ class BatteryView @JvmOverloads constructor( } @SuppressLint("SetTextI18n") - fun setBattery(battery: Int) { - text = "$battery" + fun setTextAndBattery(text: String = "", battery: Int = 0) { + this.battery = battery + if (isBattery) { + batteryWidth = StaticLayout.getDesiredWidth(battery.toString(), paint).toInt() + } + setText("$text $battery") } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) if (!isBattery) return outFrame.set( - 1.dp, + width - 6.dp - batteryWidth, 1.dp, width - 3.dp, height - 1.dp diff --git a/app/src/main/res/layout/view_book_page.xml b/app/src/main/res/layout/view_book_page.xml index 85dcf7822..81a040107 100644 --- a/app/src/main/res/layout/view_book_page.xml +++ b/app/src/main/res/layout/view_book_page.xml @@ -39,17 +39,6 @@ app:layout_constraintRight_toLeftOf="@+id/tv_header_right" app:layout_constraintTop_toTopOf="parent" /> - - - -