图片样式新增single,调整为【滑动/覆盖 + single】可实现一页一图,且图片为当前页面能显示的最大化 (#4463)

* 将请求等待超时时间由15s增加到60s

* 图片样式新增single,调整为【滑动/覆盖 + single】可实现一页一图,且图片为当前页面能显示的最大化。
This commit is contained in:
Sun-QAQ 2024-12-23 21:07:51 +08:00 committed by GitHub
parent 251b415ade
commit 5bc9cc427b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 65 additions and 1 deletions

View File

@ -414,6 +414,7 @@ data class Book(
const val imgStyleDefault = "DEFAULT"
const val imgStyleFull = "FULL"
const val imgStyleText = "TEXT"
const val imgStyleSingle = "SINGLE"
}
@Parcelize

View File

@ -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

View File

@ -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

View File

@ -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