From 2fec1585338e5578d0082d0907ed083c39f26d0b Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 24 Feb 2020 21:39:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../page/delegate/HorizontalPageDelegate.kt | 64 +++++++++++-------- .../book/read/page/delegate/PageDelegate.kt | 11 ++-- 2 files changed, 43 insertions(+), 32 deletions(-) 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 f64d14f78..91e8fb252 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 @@ -1,5 +1,6 @@ package io.legado.app.ui.book.read.page.delegate +import android.util.Log import android.view.MotionEvent import io.legado.app.ui.book.read.page.PageView import kotlin.math.abs @@ -9,38 +10,45 @@ abstract class HorizontalPageDelegate(pageView: PageView) : PageDelegate(pageVie override fun onTouch(event: MotionEvent) { when (event.action) { MotionEvent.ACTION_MOVE -> { - //判断是否移动了 - if (!isMoved) { - isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop - if (isMoved) { - if (event.x - startX > 0) { - //如果上一页不存在 - if (!hasPrev()) { - noNext = true - return - } - setDirection(Direction.PREV) - setBitmap() - } else { - //如果不存在表示没有下一页了 - if (!hasNext()) { - noNext = true - return - } - setDirection(Direction.NEXT) - setBitmap() - } - } - } - if (isMoved) { - isCancel = if (mDirection == Direction.NEXT) touchX > lastX else touchX < lastX - isRunning = true - //设置触摸点 - setTouchPoint(event.x, event.y) + if (isTextSelected) { + Log.e("selected", "--------------------------") + } else { + scroll(event) } } } super.onTouch(event) } + private fun scroll(event: MotionEvent) { + //判断是否移动了 + if (!isMoved) { + isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop + if (isMoved) { + if (event.x - startX > 0) { + //如果上一页不存在 + if (!hasPrev()) { + noNext = true + return + } + setDirection(Direction.PREV) + setBitmap() + } else { + //如果不存在表示没有下一页了 + if (!hasNext()) { + noNext = true + return + } + setDirection(Direction.NEXT) + setBitmap() + } + } + } + if (isMoved) { + isCancel = if (mDirection == Direction.NEXT) touchX > lastX else touchX < lastX + isRunning = true + //设置触摸点 + setTouchPoint(event.x, event.y) + } + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt index 1bbbb0dc0..61dbda2d8 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt @@ -65,6 +65,7 @@ abstract class PageDelegate(protected val pageView: PageView) : var isRunning = false var isStarted = false var isTextSelected = false + var selectedOnDown = false open fun setStartPoint(x: Float, y: Float, invalidate: Boolean = true) { startX = x @@ -210,8 +211,8 @@ abstract class PageDelegate(protected val pageView: PageView) : if (!detector.onTouchEvent(event)) { //GestureDetector.onFling小幅移动不会触发,所以要自己判断 if (event.action == MotionEvent.ACTION_UP && isMoved) { - if (isTextSelected) { - isTextSelected = false + if (selectedOnDown) { + selectedOnDown = false } if (!noNext) onAnimStart() } @@ -224,6 +225,8 @@ abstract class PageDelegate(protected val pageView: PageView) : override fun onDown(e: MotionEvent): Boolean { if (isTextSelected) { curPage.cancelSelect() + isTextSelected = false + selectedOnDown = true } //是否移动 isMoved = false @@ -244,8 +247,8 @@ abstract class PageDelegate(protected val pageView: PageView) : * 单击 */ override fun onSingleTapUp(e: MotionEvent): Boolean { - if (isTextSelected) { - isTextSelected = false + if (selectedOnDown) { + selectedOnDown = false return true } val x = e.x