新增一个电子书主题
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -163,14 +163,15 @@ abstract class BaseActivity<VB : ViewBinding>(
|
||||
"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<VB : ViewBinding>(
|
||||
}
|
||||
}
|
||||
|
||||
"12" -> setTheme(R.style.AppTheme_Transparent)
|
||||
"13" -> setTheme(R.style.AppTheme_Transparent)
|
||||
}
|
||||
|
||||
if (AppConfig.pureBlack)
|
||||
|
||||
@@ -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<Int> {
|
||||
val themeResId = themeResIdMap[value] ?: return listOf(Color.GRAY, Color.GRAY, Color.GRAY, Color.GRAY)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -529,6 +529,54 @@
|
||||
<color name="transparent_theme_surfaceContainerHigh">#4DFFFFFF</color>
|
||||
<color name="transparent_theme_surfaceContainerHighest">#66FFFFFF</color>
|
||||
|
||||
<color name="elink_theme_primary">#FFFFFF</color>
|
||||
<color name="elink_theme_onPrimary">#000000</color>
|
||||
<color name="elink_theme_primaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_onPrimaryContainer">#000000</color>
|
||||
<color name="elink_theme_secondary">#FFFFFF</color>
|
||||
<color name="elink_theme_onSecondary">#000000</color>
|
||||
<color name="elink_theme_secondaryContainer">#808080</color>
|
||||
<color name="elink_theme_onSecondaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_tertiary">#FFFFFF</color>
|
||||
<color name="elink_theme_onTertiary">#000000</color>
|
||||
<color name="elink_theme_tertiaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_onTertiaryContainer">#000000</color>
|
||||
<color name="elink_theme_error">#FFB4AB</color>
|
||||
<color name="elink_theme_onError">#690005</color>
|
||||
<color name="elink_theme_errorContainer">#93000A</color>
|
||||
<color name="elink_theme_onErrorContainer">#FFDAD6</color>
|
||||
<color name="elink_theme_background">#000000</color>
|
||||
<color name="elink_theme_onBackground">#FFFFFF</color>
|
||||
<color name="elink_theme_surface">#000000</color>
|
||||
<color name="elink_theme_onSurface">#FFFFFF</color>
|
||||
<color name="elink_theme_surfaceVariant">#444846</color>
|
||||
<color name="elink_theme_onSurfaceVariant">#C4C7C5</color>
|
||||
<color name="elink_theme_outline">#8E918F</color>
|
||||
<color name="elink_theme_outlineVariant">#444846</color>
|
||||
<color name="elink_theme_scrim">#000000</color>
|
||||
<color name="elink_theme_inverseSurface">#E5E2E1</color>
|
||||
<color name="elink_theme_inverseOnSurface">#313030</color>
|
||||
<color name="elink_theme_inversePrimary">#5D5F5F</color>
|
||||
<color name="elink_theme_primaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onPrimaryFixed">#1A1C1C</color>
|
||||
<color name="elink_theme_primaryFixedDim">#C6C6C7</color>
|
||||
<color name="elink_theme_onPrimaryFixedVariant">#454747</color>
|
||||
<color name="elink_theme_secondaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onSecondaryFixed">#1B1B1B</color>
|
||||
<color name="elink_theme_secondaryFixedDim">#C6C6C6</color>
|
||||
<color name="elink_theme_onSecondaryFixedVariant">#474747</color>
|
||||
<color name="elink_theme_tertiaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onTertiaryFixed">#1B1B1B</color>
|
||||
<color name="elink_theme_tertiaryFixedDim">#C6C6C6</color>
|
||||
<color name="elink_theme_onTertiaryFixedVariant">#474747</color>
|
||||
<color name="elink_theme_surfaceDim">#141313</color>
|
||||
<color name="elink_theme_surfaceBright">#3A3939</color>
|
||||
<color name="elink_theme_surfaceContainerLowest">#0E0E0E</color>
|
||||
<color name="elink_theme_surfaceContainerLow">#1C1B1B</color>
|
||||
<color name="elink_theme_surfaceContainer">#201F1F</color>
|
||||
<color name="elink_theme_surfaceContainerHigh">#2A2A2A</color>
|
||||
<color name="elink_theme_surfaceContainerHighest">#353434</color>
|
||||
|
||||
|
||||
<color name="disabled">@color/md_dark_disabled</color>
|
||||
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
<item>草野</item>
|
||||
<item>柠檬</item>
|
||||
<item>黑白</item>
|
||||
<item>电子书</item>
|
||||
<item>晴空</item>
|
||||
<item>八月</item>
|
||||
<item>新浪潮</item>
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
<item>10</item>
|
||||
<item>11</item>
|
||||
<item>12</item>
|
||||
<item>13</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="screen_direction_value">
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
<item>Grassland</item>
|
||||
<item>Lemon</item>
|
||||
<item>Black & White</item>
|
||||
<item>Elink</item>
|
||||
<item>Clear Sky</item>
|
||||
<item>August</item>
|
||||
<item>New Wave</item>
|
||||
|
||||
@@ -537,6 +537,55 @@
|
||||
<color name="transparent_theme_surfaceContainerHigh">#4DFFFFFF</color>
|
||||
<color name="transparent_theme_surfaceContainerHighest">#66FFFFFF</color>
|
||||
|
||||
|
||||
<color name="elink_theme_primary">#000000</color>
|
||||
<color name="elink_theme_onPrimary">#FFFFFF</color>
|
||||
<color name="elink_theme_primaryContainer">#000000</color>
|
||||
<color name="elink_theme_onPrimaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_secondary">#000000</color>
|
||||
<color name="elink_theme_onSecondary">#FFFFFF</color>
|
||||
<color name="elink_theme_secondaryContainer">#808080</color>
|
||||
<color name="elink_theme_onSecondaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_tertiary">#000000</color>
|
||||
<color name="elink_theme_onTertiary">#FFFFFF</color>
|
||||
<color name="elink_theme_tertiaryContainer">#000000</color>
|
||||
<color name="elink_theme_onTertiaryContainer">#FFFFFF</color>
|
||||
<color name="elink_theme_error">#BA1A1A</color>
|
||||
<color name="elink_theme_onError">#FFFFFF</color>
|
||||
<color name="elink_theme_errorContainer">#FFDAD6</color>
|
||||
<color name="elink_theme_onErrorContainer">#93000A</color>
|
||||
<color name="elink_theme_background">#FFFFFF</color>
|
||||
<color name="elink_theme_onBackground">#000000</color>
|
||||
<color name="elink_theme_surface">#FFFFFF</color>
|
||||
<color name="elink_theme_onSurface">#000000</color>
|
||||
<color name="elink_theme_surfaceVariant">#FFFFFF</color>
|
||||
<color name="elink_theme_onSurfaceVariant">#000000</color>
|
||||
<color name="elink_theme_outline">#000000</color>
|
||||
<color name="elink_theme_outlineVariant">#000000</color>
|
||||
<color name="elink_theme_scrim">#000000</color>
|
||||
<color name="elink_theme_inverseSurface">#313030</color>
|
||||
<color name="elink_theme_inverseOnSurface">#F4F0EF</color>
|
||||
<color name="elink_theme_inversePrimary">#C6C6C7</color>
|
||||
<color name="elink_theme_primaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onPrimaryFixed">#1A1C1C</color>
|
||||
<color name="elink_theme_primaryFixedDim">#C6C6C7</color>
|
||||
<color name="elink_theme_onPrimaryFixedVariant">#454747</color>
|
||||
<color name="elink_theme_secondaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onSecondaryFixed">#1B1B1B</color>
|
||||
<color name="elink_theme_secondaryFixedDim">#C6C6C6</color>
|
||||
<color name="elink_theme_onSecondaryFixedVariant">#474747</color>
|
||||
<color name="elink_theme_tertiaryFixed">#E2E2E2</color>
|
||||
<color name="elink_theme_onTertiaryFixed">#1B1B1B</color>
|
||||
<color name="elink_theme_tertiaryFixedDim">#C6C6C6</color>
|
||||
<color name="elink_theme_onTertiaryFixedVariant">#474747</color>
|
||||
<color name="elink_theme_surfaceDim">#DDD9D9</color>
|
||||
<color name="elink_theme_surfaceBright">#FCF8F8</color>
|
||||
<color name="elink_theme_surfaceContainerLowest">#FFFFFF</color>
|
||||
<color name="elink_theme_surfaceContainerLow">#F6F3F2</color>
|
||||
<color name="elink_theme_surfaceContainer">#F1EDEC</color>
|
||||
<color name="elink_theme_surfaceContainerHigh">#EBE7E7</color>
|
||||
<color name="elink_theme_surfaceContainerHighest">#E5E2E1</color>
|
||||
|
||||
<color name="disabled">@color/md_light_disabled</color>
|
||||
|
||||
<color name="divider">#66666666</color>
|
||||
|
||||
@@ -610,4 +610,53 @@
|
||||
<item name="colorSurfaceContainer">@color/transparent_theme_surfaceContainer</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Base.Elink" parent="Base.AppTheme">
|
||||
<item name="colorPrimary">@color/elink_theme_primary</item>
|
||||
<item name="colorOnPrimary">@color/elink_theme_onPrimary</item>
|
||||
<item name="colorPrimaryContainer">@color/elink_theme_primaryContainer</item>
|
||||
<item name="colorOnPrimaryContainer">@color/elink_theme_onPrimaryContainer</item>
|
||||
<item name="colorSecondary">@color/elink_theme_secondary</item>
|
||||
<item name="colorOnSecondary">@color/elink_theme_onSecondary</item>
|
||||
<item name="colorSecondaryContainer">@color/elink_theme_secondaryContainer</item>
|
||||
<item name="colorOnSecondaryContainer">@color/elink_theme_onSecondaryContainer</item>
|
||||
<item name="colorTertiary">@color/elink_theme_tertiary</item>
|
||||
<item name="colorOnTertiary">@color/elink_theme_onTertiary</item>
|
||||
<item name="colorTertiaryContainer">@color/elink_theme_tertiaryContainer</item>
|
||||
<item name="colorOnTertiaryContainer">@color/elink_theme_onTertiaryContainer</item>
|
||||
<item name="colorError">@color/elink_theme_error</item>
|
||||
<item name="colorOnError">@color/elink_theme_onError</item>
|
||||
<item name="colorErrorContainer">@color/elink_theme_errorContainer</item>
|
||||
<item name="colorOnErrorContainer">@color/elink_theme_onErrorContainer</item>
|
||||
<item name="android:colorBackground">@color/elink_theme_background</item>
|
||||
<item name="colorOnBackground">@color/elink_theme_onBackground</item>
|
||||
<item name="colorSurface">@color/elink_theme_surface</item>
|
||||
<item name="colorOnSurface">@color/elink_theme_onSurface</item>
|
||||
<item name="colorSurfaceVariant">@color/elink_theme_surfaceVariant</item>
|
||||
<item name="colorOnSurfaceVariant">@color/elink_theme_onSurfaceVariant</item>
|
||||
<item name="colorOutline">@color/elink_theme_outline</item>
|
||||
<item name="colorOutlineVariant">@color/elink_theme_outlineVariant</item>
|
||||
<item name="colorSurfaceInverse">@color/elink_theme_inverseSurface</item>
|
||||
<item name="colorOnSurfaceInverse">@color/elink_theme_inverseOnSurface</item>
|
||||
<item name="colorPrimaryInverse">@color/elink_theme_inversePrimary</item>
|
||||
<item name="colorPrimaryFixed">@color/elink_theme_primaryFixed</item>
|
||||
<item name="colorOnPrimaryFixed">@color/elink_theme_onPrimaryFixed</item>
|
||||
<item name="colorPrimaryFixedDim">@color/elink_theme_primaryFixedDim</item>
|
||||
<item name="colorOnPrimaryFixedVariant">@color/elink_theme_onPrimaryFixedVariant</item>
|
||||
<item name="colorSecondaryFixed">@color/elink_theme_secondaryFixed</item>
|
||||
<item name="colorOnSecondaryFixed">@color/elink_theme_onSecondaryFixed</item>
|
||||
<item name="colorSecondaryFixedDim">@color/elink_theme_secondaryFixedDim</item>
|
||||
<item name="colorOnSecondaryFixedVariant">@color/elink_theme_onSecondaryFixedVariant</item>
|
||||
<item name="colorTertiaryFixed">@color/elink_theme_tertiaryFixed</item>
|
||||
<item name="colorOnTertiaryFixed">@color/elink_theme_onTertiaryFixed</item>
|
||||
<item name="colorTertiaryFixedDim">@color/elink_theme_tertiaryFixedDim</item>
|
||||
<item name="colorOnTertiaryFixedVariant">@color/elink_theme_onTertiaryFixedVariant</item>
|
||||
<item name="colorSurfaceDim">@color/elink_theme_surfaceDim</item>
|
||||
<item name="colorSurfaceBright">@color/elink_theme_surfaceBright</item>
|
||||
<item name="colorSurfaceContainerLowest">@color/elink_theme_surfaceContainerLowest</item>
|
||||
<item name="colorSurfaceContainerLow">@color/elink_theme_surfaceContainerLow</item>
|
||||
<item name="colorSurfaceContainer">@color/elink_theme_surfaceContainer</item>
|
||||
<item name="colorSurfaceContainerHigh">@color/elink_theme_surfaceContainerHigh</item>
|
||||
<item name="colorSurfaceContainerHighest">@color/elink_theme_surfaceContainerHighest</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user