feat: 优化代码

pull/117/head
kunfei 5 years ago
parent f4b287fe51
commit a0175af74e
  1. 56
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/ScrollPageDelegate.kt

@ -2,6 +2,7 @@ package io.legado.app.ui.book.read.page.delegate
import android.view.MotionEvent
import android.view.VelocityTracker
import android.view.ViewConfiguration
import io.legado.app.ui.book.read.page.PageView
import kotlin.math.abs
@ -11,6 +12,7 @@ class ScrollPageDelegate(pageView: PageView) : PageDelegate(pageView) {
private val velocityDuration = 1000
//速度追踪器
private val mVelocity: VelocityTracker = VelocityTracker.obtain()
private val slop = ViewConfiguration.get(pageView.context).scaledTouchSlop
override fun onAnimStart() {
//惯性滚动
@ -27,58 +29,22 @@ class ScrollPageDelegate(pageView: PageView) : PageDelegate(pageView) {
override fun onTouch(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
lastY = event.y
setStartPoint(event.x, event.y)
abort()
mVelocity.clear()
}
}
return super.onTouch(event)
}
override fun onScroll(
e1: MotionEvent,
e2: MotionEvent,
distanceX: Float,
distanceY: Float
): Boolean {
mVelocity.addMovement(e2)
mVelocity.computeCurrentVelocity(velocityDuration)
if (!isMoved && abs(distanceX) < abs(distanceY)) {
if (distanceY < 0) {
//如果上一页不存在
if (!hasPrev()) {
noNext = true
return true
MotionEvent.ACTION_MOVE -> {
mVelocity.addMovement(event)
mVelocity.computeCurrentVelocity(velocityDuration)
setTouchPoint(event.x, event.y)
if (!isMoved) {
isMoved = abs(startY - event.y) > slop
}
setDirection(Direction.PREV)
} else {
//如果上一页不存在
if (!hasNext()) {
noNext = true
return true
if (isMoved) {
isRunning = true
}
setDirection(Direction.PREV)
}
isMoved = true
}
if (isMoved) {
isRunning = true
//设置触摸点
setTouchPoint(e2.x, e2.y)
}
return isMoved
}
override fun onFling(
e1: MotionEvent?,
e2: MotionEvent?,
velocityX: Float,
velocityY: Float
): Boolean {
mVelocity.addMovement(e2)
return super.onFling(e1, e2, velocityX, velocityY)
return super.onTouch(event)
}
override fun onDestroy() {

Loading…
Cancel
Save