feat: 优化代码

pull/117/head
kunfei 5 years ago
parent 9ea581aabf
commit ed1391b3bb
  1. 17
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/HorizontalPageDelegate.kt
  2. 22
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt
  3. 24
      app/src/main/java/io/legado/app/ui/book/read/page/delegate/ScrollPageDelegate.kt

@ -12,14 +12,14 @@ abstract class HorizontalPageDelegate(pageView: PageView) : PageDelegate(pageVie
if (isTextSelected) { if (isTextSelected) {
selectText(event) selectText(event)
} else { } else {
scroll(event) onScroll(event)
} }
} }
} }
super.onTouch(event) super.onTouch(event)
} }
private fun scroll(event: MotionEvent) { private fun onScroll(event: MotionEvent) {
//判断是否移动了 //判断是否移动了
if (!isMoved) { if (!isMoved) {
isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop
@ -51,17 +51,4 @@ abstract class HorizontalPageDelegate(pageView: PageView) : PageDelegate(pageVie
} }
} }
private fun selectText(event: MotionEvent) {
curPage.selectText(event) { lineIndex, charIndex ->
if (lineIndex > firstLineIndex
|| (lineIndex == firstLineIndex && charIndex > firstCharIndex)
) {
curPage.selectStartMoveIndex(firstLineIndex, firstCharIndex)
curPage.selectEndMoveIndex(lineIndex, charIndex)
} else {
curPage.selectEndMoveIndex(firstLineIndex, firstCharIndex)
curPage.selectStartMoveIndex(lineIndex, charIndex)
}
}
}
} }

@ -264,15 +264,11 @@ abstract class PageDelegate(protected val pageView: PageView) :
AppConfig.clickAllNext AppConfig.clickAllNext
) { ) {
//设置动画方向 //设置动画方向
if (!hasNext()) { if (!hasNext()) return true
return true
}
setDirection(Direction.NEXT) setDirection(Direction.NEXT)
setBitmap() setBitmap()
} else { } else {
if (!hasPrev()) { if (!hasPrev()) return true
return true
}
setDirection(Direction.PREV) setDirection(Direction.PREV)
setBitmap() setBitmap()
} }
@ -293,6 +289,20 @@ abstract class PageDelegate(protected val pageView: PageView) :
} }
} }
protected fun selectText(event: MotionEvent) {
curPage.selectText(event) { lineIndex, charIndex ->
if (lineIndex > firstLineIndex
|| (lineIndex == firstLineIndex && charIndex > firstCharIndex)
) {
curPage.selectStartMoveIndex(firstLineIndex, firstCharIndex)
curPage.selectEndMoveIndex(lineIndex, charIndex)
} else {
curPage.selectEndMoveIndex(firstLineIndex, firstCharIndex)
curPage.selectStartMoveIndex(lineIndex, charIndex)
}
}
}
/** /**
* 判断是否有上一页 * 判断是否有上一页
*/ */

@ -33,20 +33,28 @@ class ScrollPageDelegate(pageView: PageView) : PageDelegate(pageView) {
mVelocity.clear() mVelocity.clear()
} }
MotionEvent.ACTION_MOVE -> { MotionEvent.ACTION_MOVE -> {
mVelocity.addMovement(event) if (isTextSelected) {
mVelocity.computeCurrentVelocity(velocityDuration) selectText(event)
setTouchPoint(event.x, event.y) } else {
if (!isMoved) { onScroll(event)
isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop
}
if (isMoved) {
isRunning = true
} }
} }
} }
super.onTouch(event) super.onTouch(event)
} }
private fun onScroll(event: MotionEvent) {
mVelocity.addMovement(event)
mVelocity.computeCurrentVelocity(velocityDuration)
setTouchPoint(event.x, event.y)
if (!isMoved) {
isMoved = abs(startX - event.x) > slop || abs(startY - event.y) > slop
}
if (isMoved) {
isRunning = true
}
}
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
mVelocity.recycle() mVelocity.recycle()

Loading…
Cancel
Save