From 68dd23b57e6fbf5b722ca37e0b460dceb8714cef Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Thu, 5 Jun 2025 14:05:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legato/kazusa/constant/AppConst.kt | 5 - .../io/legato/kazusa/constant/PreferKey.kt | 1 - .../ui/book/read/BaseReadBookActivity.kt | 30 ++-- .../kazusa/ui/book/read/ReadBookActivity.kt | 4 +- .../kazusa/ui/book/read/TextActionMenu.kt | 3 +- .../ui/book/read/config/BgTextConfigDialog.kt | 12 +- .../ui/book/read/config/ChineseConverter.kt | 12 +- .../ui/book/read/config/ReadStyleDialog.kt | 2 +- .../read/config/TextFontWeightConverter.kt | 13 +- .../kazusa/ui/widget/image/CircleImageView.kt | 13 +- app/src/main/res/drawable/bg_edit.xml | 5 +- .../main/res/layout/activity_book_info.xml | 4 +- .../res/layout/dialog_download_choice.xml | 100 ++++--------- .../main/res/layout/dialog_read_bg_text.xml | 141 +++++++++--------- .../res/layout/dialog_read_book_style.xml | 130 ++++++---------- .../main/res/layout/fragment_chapter_list.xml | 4 +- app/src/main/res/layout/item_chapter_list.xml | 6 +- app/src/main/res/layout/item_read_style.xml | 1 - app/src/main/res/layout/item_text.xml | 1 - app/src/main/res/layout/popup_action.xml | 2 +- app/src/main/res/layout/popup_action_menu.xml | 1 + app/src/main/res/values-zh/arrays.xml | 2 +- 22 files changed, 191 insertions(+), 301 deletions(-) diff --git a/app/src/main/java/io/legato/kazusa/constant/AppConst.kt b/app/src/main/java/io/legato/kazusa/constant/AppConst.kt index d48fa2770..eb49f0919 100644 --- a/app/src/main/java/io/legato/kazusa/constant/AppConst.kt +++ b/app/src/main/java/io/legato/kazusa/constant/AppConst.kt @@ -50,11 +50,6 @@ object AppConst { "androidx.appcompat.view.menu.ListMenuItemView" ) - @SuppressLint("PrivateResource") - val sysElevation = appCtx.resources - .getDimension(com.google.android.material.R.dimen.design_appbar_elevation) - .toInt() - val androidId: String by lazy { Settings.System.getString(appCtx.contentResolver, Settings.Secure.ANDROID_ID) ?: "null" } diff --git a/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt b/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt index 0af3d1496..18ab5bc60 100644 --- a/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt +++ b/app/src/main/java/io/legato/kazusa/constant/PreferKey.kt @@ -179,5 +179,4 @@ object PreferKey { const val showReadTitleAddition = "showReadTitleAddition" const val readBarStyleFollowPage = "readBarStyleFollowPage" const val contentSelectSpeakMod = "contentReadAloudMod" - } diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/BaseReadBookActivity.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/BaseReadBookActivity.kt index 40381e3e6..b472513b6 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/BaseReadBookActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/BaseReadBookActivity.kt @@ -34,11 +34,13 @@ import io.legato.kazusa.ui.book.read.config.ClickActionConfigDialog import io.legato.kazusa.ui.book.read.config.PaddingConfigDialog import io.legato.kazusa.ui.book.read.config.PageKeyDialog import io.legato.kazusa.ui.file.HandleFileContract +import io.legato.kazusa.utils.ColorUtils import io.legato.kazusa.utils.FileDoc import io.legato.kazusa.utils.find import io.legato.kazusa.utils.getPrefString import io.legato.kazusa.utils.gone import io.legato.kazusa.utils.isTv +import io.legato.kazusa.utils.setLightStatusBar import io.legato.kazusa.utils.setNavigationBarColorAuto import io.legato.kazusa.utils.setOnApplyWindowInsetsListenerCompat import io.legato.kazusa.utils.showDialogFragment @@ -158,7 +160,6 @@ abstract class BaseReadBookActivity : fun upSystemUiVisibility( isInMultiWindow: Boolean, toolBarHide: Boolean = true, - useBgMeanColor: Boolean = false ) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.insetsController?.run { @@ -175,20 +176,19 @@ abstract class BaseReadBookActivity : } } upSystemUiVisibilityO(isInMultiWindow, toolBarHide) -// if (toolBarHide) { -// setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark()) -// } else { -// val statusBarColor = -// if (AppConfig.readBarStyleFollowPage -// && ReadBookConfig.durConfig.curBgType() == 0 -// || useBgMeanColor -// ) { -// ReadBookConfig.bgMeanColor -// } else { -// ThemeStore.statusBarColor(this, AppConfig.isTransparentStatusBar) -// } -// setLightStatusBar(ColorUtils.isColorLight(statusBarColor)) -// } + if (toolBarHide) { + setLightStatusBar(ReadBookConfig.durConfig.curStatusIconDark()) + } else { + val statusBarColor = + if (AppConfig.readBarStyleFollowPage + && ReadBookConfig.durConfig.curBgType() == 0 + ) { + ReadBookConfig.bgMeanColor + } else { + ReadBookConfig.bgMeanColor + } + setLightStatusBar(ColorUtils.isColorLight(statusBarColor)) + } } @Suppress("DEPRECATION") diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/ReadBookActivity.kt index e942f67e0..0cc9de242 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/ReadBookActivity.kt @@ -262,7 +262,7 @@ class ReadBookActivity : BaseReadBookActivity(), //binding.cursorRight.setColorFilter(accentColor) binding.cursorLeft.setOnTouchListener(this) binding.cursorRight.setOnTouchListener(this) - window.setBackgroundDrawable(null) + //window.setBackgroundDrawable(null) upScreenTimeOut() ReadBook.register(this) onBackPressedDispatcher.addCallback(this) { @@ -1222,7 +1222,7 @@ class ReadBookActivity : BaseReadBookActivity(), * 更新状态栏,导航栏 */ override fun upSystemUiVisibility() { - upSystemUiVisibility(isInMultiWindow, !menuLayoutIsVisible, bottomDialog > 0) + upSystemUiVisibility(isInMultiWindow, !menuLayoutIsVisible) upNavigationBarColor() } diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/TextActionMenu.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/TextActionMenu.kt index 5946d10ad..72199f20b 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/TextActionMenu.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/TextActionMenu.kt @@ -33,6 +33,7 @@ import io.legato.kazusa.utils.sendToClip import io.legato.kazusa.utils.share import io.legato.kazusa.utils.toastOnUi import io.legato.kazusa.utils.visible +import androidx.core.net.toUri @SuppressLint("RestrictedApi") class TextActionMenu(private val context: Context, private val callBack: CallBack) : @@ -217,7 +218,7 @@ class TextActionMenu(private val context: Context, private val callBack: CallBac kotlin.runCatching { val intent = if (callBack.selectedText.isAbsUrl()) { Intent(Intent.ACTION_VIEW).apply { - data = Uri.parse(callBack.selectedText) + data = callBack.selectedText.toUri() } } else { Intent(Intent.ACTION_WEB_SEARCH).apply { diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/config/BgTextConfigDialog.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/config/BgTextConfigDialog.kt index a3fc31205..15d6bcab8 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/config/BgTextConfigDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/config/BgTextConfigDialog.kt @@ -15,6 +15,7 @@ import androidx.documentfile.provider.DocumentFile import com.google.android.material.slider.Slider import com.jaredrummler.android.colorpicker.ColorPickerDialog import io.legato.kazusa.R +import io.legato.kazusa.base.BaseBottomSheetDialogFragment import io.legato.kazusa.base.BaseDialogFragment import io.legato.kazusa.constant.AppLog import io.legato.kazusa.constant.EventBus @@ -61,7 +62,7 @@ import splitties.init.appCtx import java.io.File import java.io.FileOutputStream -class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) { +class BgTextConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_bg_text) { companion object { const val TEXT_COLOR = 121 @@ -97,14 +98,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) { override fun onStart() { super.onStart() dialog?.window?.run { - clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) - //setBackgroundDrawableResource(R.color.background) - decorView.setPadding(0, 0, 0, 0) - val attr = attributes - attr.dimAmount = 0.0f - attr.gravity = Gravity.BOTTOM - attributes = attr - setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + } } diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/config/ChineseConverter.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/config/ChineseConverter.kt index 6bfc9905c..32f45294b 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/config/ChineseConverter.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/config/ChineseConverter.kt @@ -3,6 +3,7 @@ package io.legato.kazusa.ui.book.read.config import android.content.Context import android.text.SpannableString import android.util.AttributeSet +import com.google.android.material.button.MaterialButton import io.legato.kazusa.R import io.legato.kazusa.help.config.AppConfig import io.legato.kazusa.lib.dialogs.alert @@ -10,10 +11,9 @@ import io.legato.kazusa.lib.dialogs.alert import io.legato.kazusa.ui.widget.text.StrokeTextView -class ChineseConverter(context: Context, attrs: AttributeSet?) : StrokeTextView(context, attrs) { +class ChineseConverter(context: Context, attrs: AttributeSet?) : MaterialButton(context, attrs) { private val spannableString = SpannableString("简/繁") -// private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor) private var onChanged: (() -> Unit)? = null init { @@ -27,12 +27,8 @@ class ChineseConverter(context: Context, attrs: AttributeSet?) : StrokeTextView( } private fun upUi(type: Int) { - //spannableString.removeSpan(enabledSpan) -// when (type) { -// 1 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) -// 2 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) -// } - text = spannableString + val showOptions = context.resources.getStringArray(R.array.chinese_mode) + text = showOptions.getOrNull(type) ?: "" } private fun selectType() { diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/config/ReadStyleDialog.kt index f34055a48..963dbebc8 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/config/ReadStyleDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/config/ReadStyleDialog.kt @@ -234,7 +234,7 @@ class ReadStyleDialog : BaseBottomSheetDialogFragment(R.layout.dialog_read_book_ binding.apply { ivStyle.setText(item.name.ifBlank { "文字" }) ivStyle.setTextColor(item.curTextColor()) - //ivStyle.setImageDrawable(item.curBgDrawable(100, 150)) + ivStyle.setImageDrawable(item.curBgDrawable(100, 150)) if (ReadBookConfig.styleSelect == holder.layoutPosition) { //ivStyle.borderColor = accentColor ivStyle.setTextBold(true) diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/config/TextFontWeightConverter.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/config/TextFontWeightConverter.kt index 09a3e4256..a172a91fd 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/config/TextFontWeightConverter.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/config/TextFontWeightConverter.kt @@ -3,6 +3,7 @@ package io.legato.kazusa.ui.book.read.config import android.content.Context import android.text.SpannableString import android.util.AttributeSet +import com.google.android.material.button.MaterialButton import io.legato.kazusa.R import io.legato.kazusa.help.config.ReadBookConfig import io.legato.kazusa.lib.dialogs.alert @@ -11,10 +12,9 @@ import io.legato.kazusa.ui.widget.text.StrokeTextView class TextFontWeightConverter(context: Context, attrs: AttributeSet?) : - StrokeTextView(context, attrs) { + MaterialButton(context, attrs) { private val spannableString = SpannableString(context.getString(R.string.font_weight_text)) - //private var enabledSpan: ForegroundColorSpan = ForegroundColorSpan(context.accentColor) private var onChanged: (() -> Unit)? = null init { @@ -29,13 +29,8 @@ class TextFontWeightConverter(context: Context, attrs: AttributeSet?) : @Suppress("MemberVisibilityCanBePrivate") fun upUi(type: Int) { -// spannableString.removeSpan(enabledSpan) -// when (type) { -// 0 -> spannableString.setSpan(enabledSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) -// 1 -> spannableString.setSpan(enabledSpan, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) -// 2 -> spannableString.setSpan(enabledSpan, 4, 5, Spannable.SPAN_INCLUSIVE_EXCLUSIVE) -// } - text = spannableString + val weightOptions = context.resources.getStringArray(R.array.text_font_weight) + text = weightOptions.getOrNull(type) ?: "" } private fun selectType() { diff --git a/app/src/main/java/io/legato/kazusa/ui/widget/image/CircleImageView.kt b/app/src/main/java/io/legato/kazusa/ui/widget/image/CircleImageView.kt index 2eeb526f3..017571377 100644 --- a/app/src/main/java/io/legato/kazusa/ui/widget/image/CircleImageView.kt +++ b/app/src/main/java/io/legato/kazusa/ui/widget/image/CircleImageView.kt @@ -22,6 +22,7 @@ import io.legato.kazusa.utils.printOnDebug import io.legato.kazusa.utils.spToPx import kotlin.math.min import kotlin.math.pow +import androidx.core.graphics.createBitmap @Suppress("unused", "MemberVisibilityCanBePrivate") class CircleImageView @JvmOverloads constructor( @@ -293,17 +294,9 @@ class CircleImageView @JvmOverloads constructor( return try { val bitmap: Bitmap = if (drawable is ColorDrawable) { - Bitmap.createBitmap( - COLOR_DRAWABLE_DIMENSION, - COLOR_DRAWABLE_DIMENSION, - BITMAP_CONFIG - ) + createBitmap(COLOR_DRAWABLE_DIMENSION, COLOR_DRAWABLE_DIMENSION, BITMAP_CONFIG) } else { - Bitmap.createBitmap( - drawable.intrinsicWidth, - drawable.intrinsicHeight, - BITMAP_CONFIG - ) + createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, BITMAP_CONFIG) } val canvas = Canvas(bitmap) diff --git a/app/src/main/res/drawable/bg_edit.xml b/app/src/main/res/drawable/bg_edit.xml index 9653cca5e..d54b42881 100644 --- a/app/src/main/res/drawable/bg_edit.xml +++ b/app/src/main/res/drawable/bg_edit.xml @@ -1,7 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_book_info.xml b/app/src/main/res/layout/activity_book_info.xml index b500184da..0d9d621df 100644 --- a/app/src/main/res/layout/activity_book_info.xml +++ b/app/src/main/res/layout/activity_book_info.xml @@ -365,8 +365,8 @@ android:clickable="true" android:focusable="true" android:minHeight="48dp" - android:paddingLeft="8dp" - android:paddingBottom="8dp" + android:paddingHorizontal="8dp" + android:paddingBottom="80dp" android:lineSpacingExtra="4dp" android:text="@string/book_intro" android:textIsSelectable="true" diff --git a/app/src/main/res/layout/dialog_download_choice.xml b/app/src/main/res/layout/dialog_download_choice.xml index 8923c90f5..13df7176b 100644 --- a/app/src/main/res/layout/dialog_download_choice.xml +++ b/app/src/main/res/layout/dialog_download_choice.xml @@ -1,83 +1,47 @@ - - - + android:layout_marginStart="6dp" + android:layout_marginEnd="4dp" + app:boxBackgroundMode="outline"> - - - - - + + + android:layout_height="60dp" + android:layout_weight="1"/> + + + + + + + diff --git a/app/src/main/res/layout/dialog_read_bg_text.xml b/app/src/main/res/layout/dialog_read_bg_text.xml index a228d0988..279495cac 100644 --- a/app/src/main/res/layout/dialog_read_bg_text.xml +++ b/app/src/main/res/layout/dialog_read_bg_text.xml @@ -6,12 +6,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:padding="10dp"> + android:padding="16dp"> + android:textSize="16sp" + android:textStyle="bold"/> - + app:iconGravity="textStart" + app:icon="@drawable/ic_edit" /> - - - + style="@style/Widget.Material3.Button.TonalButton" + android:layout_height="40dp" + android:text="@string/restore" /> - - + android:padding="3dp" + android:orientation="horizontal"> - - - + + + + - - + - @@ -168,8 +169,7 @@ android:id="@+id/tv_bg_image" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="6dp" - android:paddingRight="6dp" + android:paddingTop="16dp" android:text="@string/bg_image" /> diff --git a/app/src/main/res/layout/dialog_read_book_style.xml b/app/src/main/res/layout/dialog_read_book_style.xml index 763de1dbe..865617036 100644 --- a/app/src/main/res/layout/dialog_read_book_style.xml +++ b/app/src/main/res/layout/dialog_read_book_style.xml @@ -7,120 +7,80 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + + android:layout_marginHorizontal="16dp" > - + android:text="@string/font_weight_text" /> - - + style="@style/Widget.Material3.Button.TonalButton" + android:text="@string/text_font" /> - - + style="@style/Widget.Material3.Button.TonalButton" + android:text="@string/text_indent" /> + + + + + android:layout_weight="1" + style="@style/Widget.Material3.Button.TonalButton" /> - - - + android:layout_weight="1" + style="@style/Widget.Material3.Button.TonalButton" + android:text="@string/padding" /> - - - + android:layout_weight="1" + style="@style/Widget.Material3.Button.TonalButton" + android:text="@string/information" /> @@ -182,13 +142,14 @@ @@ -200,8 +161,7 @@ android:layout_height="wrap_content" android:layout_margin="4dp" android:text="@string/page_anim_cover" - app:chipStrokeColor="@color/primaryText" - app:chipStrokeWidth="1dp" /> + /> @@ -222,7 +181,6 @@ android:layout_height="wrap_content" android:layout_margin="4dp" android:text="@string/page_anim_simulation" - app:chipStrokeColor="@color/primaryText" app:chipStrokeWidth="1dp" /> @@ -233,7 +191,6 @@ android:layout_height="wrap_content" android:layout_margin="4dp" android:text="@string/page_anim_scroll" - app:chipStrokeColor="@color/primaryText" app:chipStrokeWidth="1dp" /> @@ -244,7 +201,6 @@ android:layout_height="wrap_content" android:layout_margin="4dp" android:text="@string/page_anim_none" - app:chipStrokeColor="@color/primaryText" app:chipStrokeWidth="1dp" /> diff --git a/app/src/main/res/layout/fragment_chapter_list.xml b/app/src/main/res/layout/fragment_chapter_list.xml index af17c6bb8..fec27a6a8 100644 --- a/app/src/main/res/layout/fragment_chapter_list.xml +++ b/app/src/main/res/layout/fragment_chapter_list.xml @@ -39,7 +39,7 @@ style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" android:layout_width="36dp" android:layout_height="36dp" - android:icon="@drawable/ic_arrow_drop_up" + app:icon="@drawable/ic_arrow_drop_up" android:contentDescription="@string/go_to_top" app:iconGravity="textStart" app:iconPadding="0dp" /> @@ -49,7 +49,7 @@ style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" android:layout_width="36dp" android:layout_height="36dp" - android:icon="@drawable/ic_arrow_drop_down" + app:icon="@drawable/ic_arrow_drop_down" android:contentDescription="@string/go_to_bottom" app:iconGravity="textStart" app:iconPadding="0dp" /> diff --git a/app/src/main/res/layout/item_chapter_list.xml b/app/src/main/res/layout/item_chapter_list.xml index dde53a34c..28a73fb29 100644 --- a/app/src/main/res/layout/item_chapter_list.xml +++ b/app/src/main/res/layout/item_chapter_list.xml @@ -8,7 +8,7 @@ android:background="?android:attr/selectableItemBackground" android:orientation="vertical" android:paddingHorizontal="16dp" - android:paddingVertical="8dp"> + android:paddingVertical="12dp"> \ No newline at end of file diff --git a/app/src/main/res/layout/item_text.xml b/app/src/main/res/layout/item_text.xml index b8d2bcc52..9ad6c0b61 100644 --- a/app/src/main/res/layout/item_text.xml +++ b/app/src/main/res/layout/item_text.xml @@ -10,6 +10,5 @@ android:padding="5dp" android:maxLines="1" android:scrollbars="none" - android:textColor="@color/primaryText" android:textSize="14sp" tools:ignore="UnusedAttribute" /> diff --git a/app/src/main/res/layout/popup_action.xml b/app/src/main/res/layout/popup_action.xml index d15c9dca2..51b7ec89f 100644 --- a/app/src/main/res/layout/popup_action.xml +++ b/app/src/main/res/layout/popup_action.xml @@ -4,7 +4,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:padding="8dp"> + android:padding="16dp"> - 关闭 + 关闭简繁转换 繁体转简体 简体转繁体