From eac8a4eeb85e6f0ab4e989d992b0c2c2b9d23b3f Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 22 May 2022 21:10:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BF=BB=E9=A1=B5=E5=8A=A8?= =?UTF-8?q?=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/book/read/page/PageView.kt | 15 +++++++++++++++ .../read/page/delegate/HorizontalPageDelegate.kt | 9 ++++----- 2 files changed, 19 insertions(+), 5 deletions(-) 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 9f1fd01ed..b030ed118 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 @@ -2,6 +2,7 @@ package io.legado.app.ui.book.read.page import android.annotation.SuppressLint import android.content.Context +import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.view.LayoutInflater 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.help.config.ReadBookConfig import io.legado.app.help.config.ReadTipConfig +import io.legado.app.help.coroutine.Coroutine import io.legado.app.model.ReadBook import io.legado.app.ui.book.read.ReadBookActivity 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 tvTimeBatteryP: BatteryView? = null + var bitmap: Bitmap? = null + private set + val headerHeight: Int get() { 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 { upTipStyle() ReadBookConfig.let { @@ -225,6 +238,7 @@ class PageView(context: Context) : FrameLayout(context) { val time = timeFormat.format(Date(System.currentTimeMillis())) tvTimeBattery?.setBattery(battery, time) tvTimeBatteryP?.text = "$time $battery%" + upBitmap() } fun setContent(textPage: TextPage, resetPageOffset: Boolean = true) { @@ -233,6 +247,7 @@ class PageView(context: Context) : FrameLayout(context) { resetPageOffset() } binding.contentTextView.setContent(textPage) + upBitmap() } fun setContentDescription(content: String) { diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt index 3f8c29ca3..9373ae243 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt @@ -4,7 +4,6 @@ import android.graphics.Bitmap import android.view.MotionEvent import io.legado.app.ui.book.read.page.ReadView import io.legado.app.ui.book.read.page.entities.PageDirection -import io.legado.app.utils.screenshot abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readView) { @@ -21,15 +20,15 @@ abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readVie when (mDirection) { PageDirection.PREV -> { prevBitmap?.recycle() - prevBitmap = prevPage.screenshot() + prevBitmap = prevPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false) curBitmap?.recycle() - curBitmap = curPage.screenshot() + curBitmap = curPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false) } PageDirection.NEXT -> { nextBitmap?.recycle() - nextBitmap = nextPage.screenshot() + nextBitmap = nextPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false) curBitmap?.recycle() - curBitmap = curPage.screenshot() + curBitmap = curPage.bitmap?.copy(Bitmap.Config.ARGB_8888, false) } else -> Unit }