diff --git a/app/src/main/java/io/legato/kazusa/App.kt b/app/src/main/java/io/legato/kazusa/App.kt index b516c817b..5d92d0271 100644 --- a/app/src/main/java/io/legato/kazusa/App.kt +++ b/app/src/main/java/io/legato/kazusa/App.kt @@ -72,7 +72,7 @@ class App : Application() { override fun onCreate() { - if (getPrefString("app_theme", "0") == "11") { + if (getPrefString("app_theme", "0") == "12") { if (AppConfig.customMode == "accent") setTheme(R.style.ThemeOverlay_WhiteBackground) diff --git a/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt b/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt index 6ad080f9b..56a243f83 100644 --- a/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt +++ b/app/src/main/java/io/legato/kazusa/base/BaseActivity.kt @@ -163,14 +163,15 @@ abstract class BaseActivity( "1" -> setTheme(R.style.Theme_Base_GR) "2" -> setTheme(R.style.Theme_Base_Lemon) "3" -> setTheme(R.style.Theme_Base_WH) - "4" -> setTheme(R.style.Theme_Base_Sora) - "5" -> setTheme(R.style.Theme_Base_August) - "6" -> setTheme(R.style.Theme_Base_Carlotta) - "7" -> setTheme(R.style.Theme_Base_Koharu) - "8" -> setTheme(R.style.Theme_Base_Yuuka) - "9" -> setTheme(R.style.Theme_Base_Phoebe) - "10" -> setTheme(R.style.Theme_Base_Mujika) - "11" -> { + "4" -> setTheme(R.style.Theme_Base_Elink) + "5" -> setTheme(R.style.Theme_Base_Sora) + "6" -> setTheme(R.style.Theme_Base_August) + "7" -> setTheme(R.style.Theme_Base_Carlotta) + "8" -> setTheme(R.style.Theme_Base_Koharu) + "9" -> setTheme(R.style.Theme_Base_Yuuka) + "10" -> setTheme(R.style.Theme_Base_Phoebe) + "11" -> setTheme(R.style.Theme_Base_Mujika) + "12" -> { if (AppConfig.customMode == "accent") setTheme(R.style.ThemeOverlay_WhiteBackground) @@ -203,7 +204,7 @@ abstract class BaseActivity( } } - "12" -> setTheme(R.style.AppTheme_Transparent) + "13" -> setTheme(R.style.AppTheme_Transparent) } if (AppConfig.pureBlack) diff --git a/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt b/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt index 666aeea7d..aaa21a91c 100644 --- a/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt +++ b/app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt @@ -124,15 +124,16 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co "1" to R.style.Theme_Base_GR, "2" to R.style.Theme_Base_Lemon, "3" to R.style.Theme_Base_WH, - "4" to R.style.Theme_Base_Sora, - "5" to R.style.Theme_Base_August, - "6" to R.style.Theme_Base_Carlotta, - "7" to R.style.Theme_Base_Koharu, - "8" to R.style.Theme_Base_Yuuka, - "9" to R.style.Theme_Base_Phoebe, - "10" to R.style.Theme_Base_Mujika, - "11" to R.style.ThemeOverlay_WhiteBackground, - "12" to R.style.AppTheme_Transparent) + "4" to R.style.Theme_Base_Elink, + "5" to R.style.Theme_Base_Sora, + "6" to R.style.Theme_Base_August, + "7" to R.style.Theme_Base_Carlotta, + "8" to R.style.Theme_Base_Koharu, + "9" to R.style.Theme_Base_Yuuka, + "10" to R.style.Theme_Base_Phoebe, + "11" to R.style.Theme_Base_Mujika, + "12" to R.style.ThemeOverlay_WhiteBackground, + "13" to R.style.AppTheme_Transparent) private fun getThemeColors(value: String): List { val themeResId = themeResIdMap[value] ?: return listOf(Color.GRAY, Color.GRAY, Color.GRAY, Color.GRAY) diff --git a/app/src/main/java/io/legato/kazusa/ui/book/read/ReadMenu.kt b/app/src/main/java/io/legato/kazusa/ui/book/read/ReadMenu.kt index e7f847b19..cd0497523 100644 --- a/app/src/main/java/io/legato/kazusa/ui/book/read/ReadMenu.kt +++ b/app/src/main/java/io/legato/kazusa/ui/book/read/ReadMenu.kt @@ -2,6 +2,7 @@ package io.legato.kazusa.ui.book.read import android.annotation.SuppressLint import android.content.Context +import android.content.res.ColorStateList import android.content.res.Configuration import android.graphics.drawable.GradientDrawable import android.util.AttributeSet @@ -14,6 +15,7 @@ import android.widget.FrameLayout import android.widget.SeekBar import androidx.appcompat.widget.PopupMenu import androidx.core.graphics.ColorUtils +import androidx.core.view.doOnAttach import androidx.core.view.isGone import androidx.core.view.isVisible import com.google.android.material.button.MaterialButton @@ -47,6 +49,7 @@ import io.legato.kazusa.utils.putPrefBoolean import io.legato.kazusa.utils.startActivity import io.legato.kazusa.utils.themeColor import io.legato.kazusa.utils.visible +import org.checkerframework.checker.units.qual.cd import splitties.views.onClick /** @@ -167,19 +170,16 @@ class ReadMenu @JvmOverloads constructor( } init { - initView() - upBrightnessState() - bindEvent() + doOnAttach { + initView() + upBrightnessState() + bindEvent() + } } private fun initView() = binding.run { initAnimation() updateSliderVisibility() - binding.bottomView.post { - val allButtons = getUserButtons() - renderButtons(binding.bottomView, allButtons) - } - val brightnessBackground = GradientDrawable() brightnessBackground.cornerRadius = 5F.dpToPx() llBrightness.background = brightnessBackground @@ -198,10 +198,16 @@ class ReadMenu @JvmOverloads constructor( } else { titleBarAddition.gone() } + binding.bottomView.post { + val allButtons = getUserButtons() + renderButtons(binding.bottomView, allButtons) + } val alpha = (AppConfig.menuAlpha / 100f * 255).toInt() val color = context.themeColor(com.google.android.material.R.attr.colorSurfaceContainer) titleBar.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha)) - llSlider.alpha = AppConfig.menuAlpha / 100f + cdSlider.setCardBackgroundColor(ColorUtils.setAlphaComponent(color, alpha)) + tvPre.alpha = AppConfig.menuAlpha / 100f * 255 + tvNext.alpha = AppConfig.menuAlpha / 100f * 255 upBrightnessVwPos() /** * 确保视图不被导航栏遮挡 @@ -503,12 +509,7 @@ class ReadMenu @JvmOverloads constructor( buttonMap.clear() buttons.forEach { btn -> - val style = - if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) - com.google.android.material.R.attr.materialIconButtonFilledTonalStyle - else - com.google.android.material.R.attr.materialIconButtonOutlinedStyle - + val style = com.google.android.material.R.attr.materialIconButtonOutlinedStyle val button = MaterialButton(group.context, null, style).apply { id = btn.id.hashCode() setIconResource(btn.iconRes) @@ -517,6 +518,7 @@ class ReadMenu @JvmOverloads constructor( strokeWidth = 0 iconGravity = MaterialButton.ICON_GRAVITY_TEXT_START maxLines = 1 + iconTint = ColorStateList.valueOf(context.themeColor(androidx.appcompat.R.attr.colorPrimary)) setOnClickListener { btn.onClick() } btn.onLongClick?.let { longAction -> setOnLongClickListener { @@ -561,7 +563,7 @@ class ReadMenu @JvmOverloads constructor( iconRes = R.drawable.ic_read_aloud, description = context.getString(R.string.read_aloud), onClick = { runMenuOut { callBack.onClickReadAloud() } }, - onLongClick = { callBack.showReadAloudDialog() } + onLongClick = { runMenuOut { callBack.onClickReadAloud() } } ), ToolButton( id = "setting", @@ -653,7 +655,9 @@ class ReadMenu @JvmOverloads constructor( fun upBookView() { val bookName = ReadBook.book?.name ?: "" - if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { + val isTablet = (resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE + + if (isTablet || resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { binding.titleBar.title = bookName binding.tvBookName.gone() } else { diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 7445325ae..8426488b4 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -529,6 +529,54 @@ #4DFFFFFF #66FFFFFF + #FFFFFF + #000000 + #FFFFFF + #000000 + #FFFFFF + #000000 + #808080 + #FFFFFF + #FFFFFF + #000000 + #FFFFFF + #000000 + #FFB4AB + #690005 + #93000A + #FFDAD6 + #000000 + #FFFFFF + #000000 + #FFFFFF + #444846 + #C4C7C5 + #8E918F + #444846 + #000000 + #E5E2E1 + #313030 + #5D5F5F + #E2E2E2 + #1A1C1C + #C6C6C7 + #454747 + #E2E2E2 + #1B1B1B + #C6C6C6 + #474747 + #E2E2E2 + #1B1B1B + #C6C6C6 + #474747 + #141313 + #3A3939 + #0E0E0E + #1C1B1B + #201F1F + #2A2A2A + #353434 + @color/md_dark_disabled diff --git a/app/src/main/res/values-zh/arrays.xml b/app/src/main/res/values-zh/arrays.xml index a42a1727b..a16050365 100644 --- a/app/src/main/res/values-zh/arrays.xml +++ b/app/src/main/res/values-zh/arrays.xml @@ -130,6 +130,7 @@ 草野 柠檬 黑白 + 电子书 晴空 八月 新浪潮 diff --git a/app/src/main/res/values/array_values.xml b/app/src/main/res/values/array_values.xml index c5124fabd..e3cb729b6 100644 --- a/app/src/main/res/values/array_values.xml +++ b/app/src/main/res/values/array_values.xml @@ -41,6 +41,7 @@ 10 11 12 + 13 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 18d3f074f..fa25c1488 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -59,6 +59,7 @@ Grassland Lemon Black & White + Elink Clear Sky August New Wave diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2df95267f..92d0d3a2b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -537,6 +537,55 @@ #4DFFFFFF #66FFFFFF + + #000000 + #FFFFFF + #000000 + #FFFFFF + #000000 + #FFFFFF + #808080 + #FFFFFF + #000000 + #FFFFFF + #000000 + #FFFFFF + #BA1A1A + #FFFFFF + #FFDAD6 + #93000A + #FFFFFF + #000000 + #FFFFFF + #000000 + #FFFFFF + #000000 + #000000 + #000000 + #000000 + #313030 + #F4F0EF + #C6C6C7 + #E2E2E2 + #1A1C1C + #C6C6C7 + #454747 + #E2E2E2 + #1B1B1B + #C6C6C6 + #474747 + #E2E2E2 + #1B1B1B + #C6C6C6 + #474747 + #DDD9D9 + #FCF8F8 + #FFFFFF + #F6F3F2 + #F1EDEC + #EBE7E7 + #E5E2E1 + @color/md_light_disabled #66666666 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 27e2e81b5..2277d0885 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -610,4 +610,53 @@ @color/transparent_theme_surfaceContainer + +