优化翻页动画

pull/1903/head
kunfei 3 years ago
parent a5548e8ee6
commit c4235345d7
  1. 15
      app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt
  2. 9
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt

@ -2,6 +2,7 @@ package io.legado.app.ui.book.read.page
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Bitmap
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.FrameLayout import android.widget.FrameLayout
@ -13,6 +14,7 @@ import io.legado.app.data.entities.Bookmark
import io.legado.app.databinding.ViewBookPageBinding import io.legado.app.databinding.ViewBookPageBinding
import io.legado.app.help.config.ReadBookConfig import io.legado.app.help.config.ReadBookConfig
import io.legado.app.help.config.ReadTipConfig import io.legado.app.help.config.ReadTipConfig
import io.legado.app.help.coroutine.Coroutine
import io.legado.app.model.ReadBook import io.legado.app.model.ReadBook
import io.legado.app.ui.book.read.ReadBookActivity import io.legado.app.ui.book.read.ReadBookActivity
import io.legado.app.ui.book.read.page.entities.TextPage import io.legado.app.ui.book.read.page.entities.TextPage
@ -41,6 +43,9 @@ class PageView(context: Context) : FrameLayout(context) {
private var tvTimeBattery: BatteryView? = null private var tvTimeBattery: BatteryView? = null
private var tvTimeBatteryP: BatteryView? = null private var tvTimeBatteryP: BatteryView? = null
var bitmap: Bitmap? = null
private set
val headerHeight: Int val headerHeight: Int
get() { get() {
val h1 = if (ReadBookConfig.hideStatusBar) 0 else context.statusBarHeight val h1 = if (ReadBookConfig.hideStatusBar) 0 else context.statusBarHeight
@ -59,6 +64,14 @@ class PageView(context: Context) : FrameLayout(context) {
} }
} }
private fun upBitmap() {
Coroutine.async {
val screenshot = screenshot()
bitmap?.recycle()
bitmap = screenshot
}
}
fun upStyle() = binding.run { fun upStyle() = binding.run {
upTipStyle() upTipStyle()
ReadBookConfig.let { ReadBookConfig.let {
@ -225,6 +238,7 @@ class PageView(context: Context) : FrameLayout(context) {
val time = timeFormat.format(Date(System.currentTimeMillis())) val time = timeFormat.format(Date(System.currentTimeMillis()))
tvTimeBattery?.setBattery(battery, time) tvTimeBattery?.setBattery(battery, time)
tvTimeBatteryP?.text = "$time $battery%" tvTimeBatteryP?.text = "$time $battery%"
upBitmap()
} }
fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) { fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) {
@ -233,6 +247,7 @@ class PageView(context: Context) : FrameLayout(context) {
resetPageOffset() resetPageOffset()
} }
binding.contentTextView.setContent(textPage) binding.contentTextView.setContent(textPage)
upBitmap()
} }
fun setContentDescription(content: String) { fun setContentDescription(content: String) {

@ -4,7 +4,6 @@ import android.graphics.Bitmap
import android.view.MotionEvent import android.view.MotionEvent
import io.legado.app.ui.book.read.page.ReadView import io.legado.app.ui.book.read.page.ReadView
import io.legado.app.ui.book.read.page.entities.PageDirection import io.legado.app.ui.book.read.page.entities.PageDirection
import io.legado.app.utils.screenshot
abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readView) { abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readView) {
@ -21,15 +20,15 @@ abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readVie
when (mDirection) { when (mDirection) {
PageDirection.PREV -> { PageDirection.PREV -> {
prevBitmap?.recycle() prevBitmap?.recycle()
prevBitmap = prevPage.screenshot() prevBitmap = prevPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false)
curBitmap?.recycle() curBitmap?.recycle()
curBitmap = curPage.screenshot() curBitmap = curPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false)
} }
PageDirection.NEXT -> { PageDirection.NEXT -> {
nextBitmap?.recycle() nextBitmap?.recycle()
nextBitmap = nextPage.screenshot() nextBitmap = nextPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false)
curBitmap?.recycle() curBitmap?.recycle()
curBitmap = curPage.screenshot() curBitmap = curPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false)
} }
else -> Unit else -> Unit
} }

Loading…
Cancel
Save