diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 5c420eaef..3f19fde3c 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -1329,8 +1329,13 @@ class ReadBookActivity : BaseReadBookActivity(), ReadAloud.upReadAloudClass() val scrollPageAnim = ReadBook.pageAnim() == 3 if (scrollPageAnim) { - val startPos = binding.readView.getCurPagePosition() - ReadBook.readAloud(startPos = startPos) + val line = binding.readView.getCurVisibleFirstLine() + if (line != null) { + ReadBook.durChapterPos = line.chapterPosition + ReadBook.readAloud(startPos = line.pagePosition) + } else { + ReadBook.readAloud() + } } else { ReadBook.readAloud() } @@ -1340,8 +1345,13 @@ class ReadBookActivity : BaseReadBookActivity(), val scrollPageAnim = ReadBook.pageAnim() == 3 if (scrollPageAnim && pageChanged) { pageChanged = false - val startPos = binding.readView.getCurPagePosition() - ReadBook.readAloud(startPos = startPos) + val line = binding.readView.getCurVisibleFirstLine() + if (line != null) { + ReadBook.durChapterPos = line.chapterPosition + ReadBook.readAloud(startPos = line.pagePosition) + } else { + ReadBook.readAloud() + } } else { ReadAloud.resume(this) } @@ -1644,6 +1654,7 @@ class ReadBookActivity : BaseReadBookActivity(), lifecycleScope.launch(IO) { if (BaseReadAloudService.isPlay()) { ReadBook.curTextChapter?.let { textChapter -> + ReadBook.durChapterPos = chapterStart val pageIndex = ReadBook.durPageIndex val aloudSpanStart = chapterStart - textChapter.getReadLength(pageIndex) textChapter.getPage(pageIndex) diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt index 527368f6e..7526aba85 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt @@ -29,6 +29,7 @@ import io.legado.app.ui.book.read.page.delegate.SimulationPageDelegate import io.legado.app.ui.book.read.page.delegate.SlidePageDelegate import io.legado.app.ui.book.read.page.entities.PageDirection import io.legado.app.ui.book.read.page.entities.TextChapter +import io.legado.app.ui.book.read.page.entities.TextLine import io.legado.app.ui.book.read.page.entities.TextPage import io.legado.app.ui.book.read.page.entities.TextPos import io.legado.app.ui.book.read.page.entities.column.TextColumn @@ -306,6 +307,8 @@ class ReadView(context: Context, attrs: AttributeSet) : invalidate() } pageDelegate?.onScroll() + val offset = touchY - lastY + touchY -= offset - offset.toInt() } /** @@ -451,6 +454,7 @@ class ReadView(context: Context, attrs: AttributeSet) : { progress -> callBack.sureNewProgress(progress) }, { context.longToastOnUi(context.getString(R.string.upload_book_success)) }, { context.longToastOnUi(context.getString(R.string.sync_book_progress_success)) }) + 13 -> { if (BaseReadAloudService.isPlay()) { ReadAloud.pause(context) @@ -671,8 +675,8 @@ class ReadView(context: Context, attrs: AttributeSet) : return curPage.getCurVisiblePage() } - fun getCurPagePosition(): Int { - return curPage.getCurVisibleFirstLine()?.pagePosition ?: 0 + fun getCurVisibleFirstLine(): TextLine? { + return curPage.getCurVisibleFirstLine() } fun invalidateTextPage() {