优化
This commit is contained in:
@@ -58,14 +58,11 @@ class CoverPageDelegate(readView: ReadView) : HorizontalPageDelegate(readView) {
|
|||||||
override fun setBitmap() {
|
override fun setBitmap() {
|
||||||
when (mDirection) {
|
when (mDirection) {
|
||||||
PageDirection.PREV -> {
|
PageDirection.PREV -> {
|
||||||
prevBitmap?.recycle()
|
prevBitmap = prevPage.screenshot(prevBitmap, canvas)
|
||||||
prevBitmap = prevPage.screenshot()
|
|
||||||
}
|
}
|
||||||
PageDirection.NEXT -> {
|
PageDirection.NEXT -> {
|
||||||
nextBitmap?.recycle()
|
nextBitmap = nextPage.screenshot(nextBitmap, canvas)
|
||||||
nextBitmap = nextPage.screenshot()
|
curBitmap = curPage.screenshot(curBitmap, canvas)
|
||||||
curBitmap?.recycle()
|
|
||||||
curBitmap = curPage.screenshot()
|
|
||||||
}
|
}
|
||||||
else -> Unit
|
else -> Unit
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-8
@@ -1,6 +1,7 @@
|
|||||||
package io.legado.app.ui.book.read.page.delegate
|
package io.legado.app.ui.book.read.page.delegate
|
||||||
|
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
|
import android.graphics.Canvas
|
||||||
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
|
||||||
@@ -11,6 +12,7 @@ abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readVie
|
|||||||
protected var curBitmap: Bitmap? = null
|
protected var curBitmap: Bitmap? = null
|
||||||
protected var prevBitmap: Bitmap? = null
|
protected var prevBitmap: Bitmap? = null
|
||||||
protected var nextBitmap: Bitmap? = null
|
protected var nextBitmap: Bitmap? = null
|
||||||
|
protected var canvas: Canvas = Canvas()
|
||||||
private val slopSquare by lazy { readView.slopSquare * readView.slopSquare }
|
private val slopSquare by lazy { readView.slopSquare * readView.slopSquare }
|
||||||
|
|
||||||
override fun setDirection(direction: PageDirection) {
|
override fun setDirection(direction: PageDirection) {
|
||||||
@@ -21,17 +23,13 @@ abstract class HorizontalPageDelegate(readView: ReadView) : PageDelegate(readVie
|
|||||||
open fun setBitmap() {
|
open fun setBitmap() {
|
||||||
when (mDirection) {
|
when (mDirection) {
|
||||||
PageDirection.PREV -> {
|
PageDirection.PREV -> {
|
||||||
prevBitmap?.recycle()
|
prevBitmap = prevPage.screenshot(prevBitmap, canvas)
|
||||||
prevBitmap = prevPage.screenshot()
|
curBitmap = curPage.screenshot(curBitmap, canvas)
|
||||||
curBitmap?.recycle()
|
|
||||||
curBitmap = curPage.screenshot()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PageDirection.NEXT -> {
|
PageDirection.NEXT -> {
|
||||||
nextBitmap?.recycle()
|
nextBitmap = nextPage.screenshot(nextBitmap, canvas)
|
||||||
nextBitmap = nextPage.screenshot()
|
curBitmap = curPage.screenshot(curBitmap, canvas)
|
||||||
curBitmap?.recycle()
|
|
||||||
curBitmap = curPage.screenshot()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> Unit
|
else -> Unit
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ class NoAnimPageDelegate(readView: ReadView) : HorizontalPageDelegate(readView)
|
|||||||
stopScroll()
|
stopScroll()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun setBitmap() {
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
override fun onDraw(canvas: Canvas) {
|
||||||
// nothing
|
// nothing
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.annotation.SuppressLint
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Canvas
|
import android.graphics.Canvas
|
||||||
|
import android.graphics.Color
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.text.Html
|
import android.text.Html
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
@@ -133,12 +134,21 @@ fun View.visible(visible: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun View.screenshot(): Bitmap? {
|
fun View.screenshot(bitmap: Bitmap? = null, canvas: Canvas? = null): Bitmap? {
|
||||||
return if (width > 0 && height > 0) {
|
return if (width > 0 && height > 0) {
|
||||||
val screenshot = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
val screenshot = if (bitmap != null && bitmap.width == width && bitmap.height == height) {
|
||||||
val c = Canvas(screenshot)
|
bitmap.eraseColor(Color.TRANSPARENT)
|
||||||
|
bitmap
|
||||||
|
} else {
|
||||||
|
bitmap?.recycle()
|
||||||
|
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
||||||
|
}
|
||||||
|
val c = canvas ?: Canvas()
|
||||||
|
c.setBitmap(screenshot)
|
||||||
|
c.save()
|
||||||
c.translate(-scrollX.toFloat(), -scrollY.toFloat())
|
c.translate(-scrollX.toFloat(), -scrollY.toFloat())
|
||||||
this.draw(c)
|
this.draw(c)
|
||||||
|
c.restore()
|
||||||
c.setBitmap(null)
|
c.setBitmap(null)
|
||||||
screenshot.prepareToDraw()
|
screenshot.prepareToDraw()
|
||||||
screenshot
|
screenshot
|
||||||
|
|||||||
Reference in New Issue
Block a user