From df0370cde715d7e458d45925c7bb4b9ff0f814d6 Mon Sep 17 00:00:00 2001 From: Leroy-X Date: Fri, 27 Jun 2025 21:26:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E3=80=91=E4=B8=BA?= =?UTF-8?q?=E5=A2=A8=E6=B0=B4=E5=B1=8F=E6=A8=A1=E5=BC=8F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=B8=8B=E5=88=92=E7=BA=BF=E9=AB=98=E4=BA=AE?= =?UTF-8?q?=20(#5207)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Feat: Auto add underline for highlight in E-Ink mode * Feat: Unify search result highlight to underline in E-Ink mode * Feat: Create a simplified workflow for building signed release APK * Fix: Restore original signing method for release build * Feat: Create final workflow to build and release signed APK with custom body * Feat: Finalized custom release workflow * Chore: Revert workflow file to original version * Fix: Adjust underline vertical position for visual perfection --- .../ui/book/read/page/entities/TextLine.kt | 11 ++++++ .../app/ui/book/searchContent/SearchResult.kt | 39 +++++++++++++------ 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt index 806e8f50b..d981c33ce 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/entities/TextLine.kt @@ -160,6 +160,17 @@ data class TextLine( columns[i].draw(view, canvas) } } + + // 墨水屏模式下的朗读和搜索下划线 + if (AppConfig.isEInkMode && (isReadAloud || searchResultColumnCount > 0)) { + val underlinePaint = PaintPool.obtain() + underlinePaint.set(ChapterProvider.contentPaint) + underlinePaint.strokeWidth = 1.dpToPx().toFloat() + val lineY = height - 1.dpToPx() + canvas.drawLine(lineStart + indentWidth, lineY, lineEnd, lineY, underlinePaint) + PaintPool.recycle(underlinePaint) + } + if (ReadBookConfig.underline && !isImage && ReadBook.book?.isImage != true) { drawUnderline(canvas) } diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchResult.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchResult.kt index 6da724e3c..ea24702a9 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchResult.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchResult.kt @@ -2,6 +2,7 @@ package io.legado.app.ui.book.searchContent import android.text.Spanned import androidx.core.text.HtmlCompat +import io.legado.app.help.config.AppConfig data class SearchResult( val resultCount: Int = 0, @@ -22,23 +23,39 @@ data class SearchResult( val leftString = resultText.substring(0, queryIndexInSurrounding) val rightString = resultText.substring(queryIndexInSurrounding + query.length, resultText.length) - val html = buildString { - append(chapterTitle.colorTextForHtml(accentColor)) - append("
") - append(leftString.colorTextForHtml(textColor)) - append(query.colorTextForHtml(accentColor)) - append(rightString.colorTextForHtml(textColor)) + + // 检查是否为墨水屏模式 + val html = if (AppConfig.isEInkMode) { + // 墨水屏模式:使用下划线 + buildString { + append("${chapterTitle}") + append("
") + append(leftString) + append("${query}") + append(rightString) + } + } else { + // 普通模式:使用颜色 + buildString { + append(chapterTitle.colorTextForHtml(accentColor)) + append("
") + append(leftString.colorTextForHtml(textColor)) + append(query.colorTextForHtml(accentColor)) + append(rightString.colorTextForHtml(textColor)) + } } HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY) } else { - HtmlCompat.fromHtml( - resultText.colorTextForHtml(textColor), - HtmlCompat.FROM_HTML_MODE_LEGACY - ) + val html = if (AppConfig.isEInkMode) { + resultText + } else { + resultText.colorTextForHtml(textColor) + } + HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY) } } private fun String.colorTextForHtml(textColor: String) = "$this" -} \ No newline at end of file +}