From 5bc9cc427bf31dd78765777d50cb1a588a12b80b Mon Sep 17 00:00:00 2001 From: Sun-QAQ <75133710+Sun-QAQ@users.noreply.github.com> Date: Mon, 23 Dec 2024 21:07:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=B7=E5=BC=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9Esingle=EF=BC=8C=E8=B0=83=E6=95=B4=E4=B8=BA=E3=80=90?= =?UTF-8?q?=E6=BB=91=E5=8A=A8/=E8=A6=86=E7=9B=96=20+=20single=E3=80=91?= =?UTF-8?q?=E5=8F=AF=E5=AE=9E=E7=8E=B0=E4=B8=80=E9=A1=B5=E4=B8=80=E5=9B=BE?= =?UTF-8?q?=EF=BC=8C=E4=B8=94=E5=9B=BE=E7=89=87=E4=B8=BA=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=83=BD=E6=98=BE=E7=A4=BA=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E5=8C=96=20(#4463)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 将请求等待超时时间由15s增加到60s * 图片样式新增single,调整为【滑动/覆盖 + single】可实现一页一图,且图片为当前页面能显示的最大化。 --- .../java/io/legado/app/data/entities/Book.kt | 1 + .../app/ui/book/read/ReadBookActivity.kt | 2 +- .../read/page/provider/ChapterProvider.kt | 30 +++++++++++++++++ .../read/page/provider/TextChapterLayout.kt | 33 +++++++++++++++++++ 4 files changed, 65 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index d1ede0c91..de0f53915 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -414,6 +414,7 @@ data class Book( const val imgStyleDefault = "DEFAULT" const val imgStyleFull = "FULL" const val imgStyleText = "TEXT" + const val imgStyleSingle = "SINGLE" } @Parcelize 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 c33f7482a..df43ae71a 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 @@ -563,7 +563,7 @@ class ReadBookActivity : BaseReadBookActivity(), R.id.menu_set_charset -> showCharsetConfig() R.id.menu_image_style -> { val imgStyles = - arrayListOf(Book.imgStyleDefault, Book.imgStyleFull, Book.imgStyleText) + arrayListOf(Book.imgStyleDefault, Book.imgStyleFull, Book.imgStyleText, Book.imgStyleSingle) selector( R.string.image_style, imgStyles diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt index a5f2b6719..b00556694 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/ChapterProvider.kt @@ -365,6 +365,36 @@ object ChapterProvider { height = size.height * visibleWidth / size.width } + Book.imgStyleSingle -> { + width = visibleWidth + height = size.height * visibleWidth / size.width + if (height > visibleHeight) { + width = width * visibleHeight / height + height = visibleHeight + } + if (durY > 0f) { + val textPage = textPages.last() + if (doublePage && absStartX < viewWidth / 2) { + //当前页面左列结束 + textPage.leftLineSize = textPage.lineSize + absStartX = viewWidth / 2 + paddingLeft + } else { + //当前页面结束 + if (textPage.leftLineSize == 0) { + textPage.leftLineSize = textPage.lineSize + } + textPage.text = stringBuilder.toString().ifEmpty { "本页无文字内容" } + stringBuilder.clear() + textPages.add(TextPage()) + } + // 双页的 durY 不正确,可能会小于实际高度 + if (textPage.height < durY) { + textPage.height = durY + } + durY = 0f + } + } + else -> { if (size.width > visibleWidth) { height = size.height * visibleWidth / size.width diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt index 6c1e26ded..0766c83de 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt @@ -341,6 +341,39 @@ class TextChapterLayout( height = size.height * visibleWidth / size.width } + Book.imgStyleSingle -> { + width = ChapterProvider.visibleWidth + height = size.height * ChapterProvider.visibleWidth / size.width + if (height > ChapterProvider.visibleHeight) { + width = width * ChapterProvider.visibleHeight / height + height = ChapterProvider.visibleHeight + } + if (durY > 0f) { + val textPage = pendingTextPage + // 双页的 durY 不正确,可能会小于实际高度 + if (textPage.height < durY) { + textPage.height = durY + } + if (doublePage && absStartX < viewWidth / 2) { + //当前页面左列结束 + textPage.leftLineSize = textPage.lineSize + absStartX = viewWidth / 2 + paddingLeft + } else { + //当前页面结束 + if (textPage.leftLineSize == 0) { + textPage.leftLineSize = textPage.lineSize + } + textPage.text = stringBuilder.toString().ifEmpty { "本页无文字内容" } + stringBuilder.clear() + textPages.add(textPage) + coroutineContext.ensureActive() + onPageCompleted() + pendingTextPage = TextPage() + } + durY = 0f + } + } + else -> { if (size.width > visibleWidth) { height = size.height * visibleWidth / size.width