feat: 优化代码

pull/117/head
kunfei 5 years ago
parent 57c9216bcf
commit 2fec158533
  1. 64
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt
  2. 11
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.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)
}
}
}

@ -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

Loading…
Cancel
Save