|
@@ -143,7 +143,6 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
private var menu: Menu? = null
|
|
private var menu: Menu? = null
|
|
|
- private var autoPageJob: Job? = null
|
|
|
|
|
private var backupJob: Job? = null
|
|
private var backupJob: Job? = null
|
|
|
private var keepScreenJon: Job? = null
|
|
private var keepScreenJon: Job? = null
|
|
|
private var tts: TTS? = null
|
|
private var tts: TTS? = null
|
|
@@ -173,6 +172,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|
|
private var bookChanged = false
|
|
private var bookChanged = false
|
|
|
private var pageChanged = false
|
|
private var pageChanged = false
|
|
|
private var reloadContent = false
|
|
private var reloadContent = false
|
|
|
|
|
+ private val autoPageRenderer by lazy { SyncedRenderer { doAutoPage(it) } }
|
|
|
|
|
|
|
|
//恢复跳转前进度对话框的交互结果
|
|
//恢复跳转前进度对话框的交互结果
|
|
|
private var confirmRestoreProcess: Boolean? = null
|
|
private var confirmRestoreProcess: Boolean? = null
|
|
@@ -961,7 +961,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|
|
override fun autoPageStop() {
|
|
override fun autoPageStop() {
|
|
|
if (isAutoPage) {
|
|
if (isAutoPage) {
|
|
|
isAutoPage = false
|
|
isAutoPage = false
|
|
|
- autoPageJob?.cancel()
|
|
|
|
|
|
|
+ autoPageRenderer.stop()
|
|
|
binding.readView.invalidate()
|
|
binding.readView.invalidate()
|
|
|
binding.readMenu.setAutoPage(false)
|
|
binding.readMenu.setAutoPage(false)
|
|
|
upScreenTimeOut()
|
|
upScreenTimeOut()
|
|
@@ -969,33 +969,27 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private fun autoPagePlus() {
|
|
private fun autoPagePlus() {
|
|
|
- autoPageJob?.cancel()
|
|
|
|
|
- autoPageJob = lifecycleScope.launch {
|
|
|
|
|
- while (isActive) {
|
|
|
|
|
- var delayMillis = ReadBookConfig.autoReadSpeed * 1000L / binding.readView.height
|
|
|
|
|
- var scrollOffset = 1
|
|
|
|
|
- if (delayMillis < 20) {
|
|
|
|
|
- var delayInt = delayMillis.toInt()
|
|
|
|
|
- if (delayInt == 0) delayInt = 1
|
|
|
|
|
- scrollOffset = 20 / delayInt
|
|
|
|
|
- delayMillis = 20
|
|
|
|
|
- }
|
|
|
|
|
- delay(delayMillis)
|
|
|
|
|
- if (!menuLayoutIsVisible) {
|
|
|
|
|
- if (binding.readView.isScroll) {
|
|
|
|
|
- binding.readView.curPage.scroll(-scrollOffset)
|
|
|
|
|
- } else {
|
|
|
|
|
- autoPageProgress += scrollOffset
|
|
|
|
|
- if (autoPageProgress >= binding.readView.height) {
|
|
|
|
|
- autoPageProgress = 0
|
|
|
|
|
- if (!binding.readView.fillPage(PageDirection.NEXT)) {
|
|
|
|
|
- autoPageStop()
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- binding.readView.invalidate()
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ autoPageRenderer.start()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private fun doAutoPage(frameTime: Double) {
|
|
|
|
|
+ if (menuLayoutIsVisible) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ val readTime = ReadBookConfig.autoReadSpeed * 1000.0
|
|
|
|
|
+ val height = binding.readView.height
|
|
|
|
|
+ val scrollOffset = (height / readTime * frameTime).toInt().coerceAtLeast(1)
|
|
|
|
|
+ if (binding.readView.isScroll) {
|
|
|
|
|
+ binding.readView.curPage.scroll(-scrollOffset)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ autoPageProgress += scrollOffset
|
|
|
|
|
+ if (autoPageProgress >= height) {
|
|
|
|
|
+ autoPageProgress = 0
|
|
|
|
|
+ if (!binding.readView.fillPage(PageDirection.NEXT)) {
|
|
|
|
|
+ autoPageStop()
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ binding.readView.invalidate()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|