This commit is contained in:
HapeLee
2025-06-10 17:08:11 +08:00
parent 5a55aee755
commit 32e7e78c69
9 changed files with 222 additions and 62 deletions
@@ -136,7 +136,8 @@ abstract class BaseActivity<VB : ViewBinding>(
when (getPrefString("app_theme", "0")) {
"0" -> DynamicColors.applyToActivitiesIfAvailable(application)
"1" -> setTheme(R.style.Theme_Base_GR)
"2" -> setTheme(R.style.Theme_Base_WH)
"2" -> setTheme(R.style.Theme_Base_Lemon)
"3" -> setTheme(R.style.Theme_Base_WH)
}
}
@@ -91,8 +91,9 @@ class ThemeCardPreference(
private val themeResIdMap = mapOf(
"0" to R.style.Base_AppTheme,
"1" to R.style.Theme_Base_GR,
"2" to R.style.Theme_Base_WH
)
"2" to R.style.Theme_Base_Lemon,
"3" to R.style.Theme_Base_WH,
)
private fun getThemeColors(value: String): List<Int> {
val themeResId = themeResIdMap[value] ?: return listOf(Color.GRAY, Color.GRAY, Color.GRAY, Color.GRAY)
@@ -7,6 +7,7 @@ import android.view.ViewGroup
import android.view.textclassifier.TextClassifier
import androidx.lifecycle.lifecycleScope
import io.legato.kazusa.R
import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.base.BaseDialogFragment
import io.legato.kazusa.databinding.DialogTextViewBinding
import io.legato.kazusa.help.IntentData
@@ -25,7 +26,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
class TextDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_text_view) {
enum class Mode {
MD, HTML, TEXT
@@ -44,8 +45,6 @@ class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
putString("mode", mode.name)
putLong("time", time)
}
isCancelable = false
this.autoClose = autoClose
}
private val binding by viewBinding(DialogTextViewBinding::bind)
@@ -54,21 +53,21 @@ class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
override fun onStart() {
super.onStart()
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 0.9f)
//setLayout(ViewGroup.LayoutParams.MATCH_PARENT, 0.9f)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
//binding.toolBar.setBackgroundColor(primaryColor)
binding.toolBar.inflateMenu(R.menu.dialog_text)
binding.toolBar.menu.applyTint(requireContext())
binding.toolBar.setOnMenuItemClickListener {
when (it.itemId) {
R.id.menu_close -> dismissAllowingStateLoss()
}
true
}
//binding.toolBar.inflateMenu(R.menu.dialog_text)
//binding.toolBar.menu.applyTint(requireContext())
// binding.toolBar.setOnMenuItemClickListener {
// when (it.itemId) {
// R.id.menu_close -> dismissAllowingStateLoss()
// }
// true
// }
arguments?.let {
binding.toolBar.title = it.getString("title")
//binding.toolBar.title = it.getString("title")
val content = IntentData.get(it.getString("content")) ?: ""
when (it.getString("mode")) {
Mode.MD.name -> viewLifecycleOwner.lifecycleScope.launch {
@@ -100,26 +99,26 @@ class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
}
time = it.getLong("time", 0L)
}
if (time > 0) {
binding.badgeView.setBadgeCount((time / 1000).toInt())
lifecycleScope.launch {
while (time > 0) {
delay(1000)
time -= 1000
binding.badgeView.setBadgeCount((time / 1000).toInt())
if (time <= 0) {
view.post {
dialog?.setCancelable(true)
if (autoClose) dialog?.cancel()
}
}
}
}
} else {
view.post {
dialog?.setCancelable(true)
}
}
// if (time > 0) {
// binding.badgeView.setBadgeCount((time / 1000).toInt())
// lifecycleScope.launch {
// while (time > 0) {
// delay(1000)
// time -= 1000
// binding.badgeView.setBadgeCount((time / 1000).toInt())
// if (time <= 0) {
// view.post {
// dialog?.setCancelable(true)
// if (autoClose) dialog?.cancel()
// }
// }
// }
// }
// } else {
// view.post {
// dialog?.setCancelable(true)
// }
// }
}
}
+37 -26
View File
@@ -1,38 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/tool_bar"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="?attr/actionBarStyle"
app:titleTextAppearance="@style/ToolbarTitle"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="vertical"
android:gravity="center"
android:paddingVertical="8dp"
android:paddingHorizontal="16dp">
<io.legato.kazusa.ui.widget.text.ScrollTextView
android:id="@+id/text_view"
<View
android:layout_width="36dp"
android:layout_height="4dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_bottom_sheet_handle"
android:layout_marginBottom="16dp" />
<TextView
android:id="@+id/bottom_sheet_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="帮助"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:padding="12dp"
android:textColor="@color/secondaryText"
android:scrollbarStyle="outsideOverlay"
android:textIsSelectable="true"
app:layout_constraintTop_toBottomOf="@+id/tool_bar"
app:layout_constraintBottom_toBottomOf="parent"/>
<io.legato.kazusa.ui.widget.text.BadgeView
android:id="@+id/badge_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:visibility="invisible"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:fillViewport="true">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:scrollbarStyle="outsideOverlay"
android:textIsSelectable="true" />
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
+49
View File
@@ -48,6 +48,7 @@
<color name="md_theme_surfaceContainerHigh">#282B24</color>
<color name="md_theme_surfaceContainerHighest">#33362E</color>
<color name="wh_theme_primary">#C7C6C6</color>
<color name="wh_theme_onPrimary">#303031</color>
<color name="wh_theme_primaryContainer">#919090</color>
@@ -96,6 +97,54 @@
<color name="wh_theme_surfaceContainerHigh">#2A2A2A</color>
<color name="wh_theme_surfaceContainerHighest">#353434</color>
<color name="lemon_theme_primary">#DBC66E</color>
<color name="lemon_theme_onPrimary">#3A3000</color>
<color name="lemon_theme_primaryContainer">#534600</color>
<color name="lemon_theme_onPrimaryContainer">#F8E287</color>
<color name="lemon_theme_secondary">#D1C6A1</color>
<color name="lemon_theme_onSecondary">#363016</color>
<color name="lemon_theme_secondaryContainer">#4E472A</color>
<color name="lemon_theme_onSecondaryContainer">#EEE2BC</color>
<color name="lemon_theme_tertiary">#A9D0B3</color>
<color name="lemon_theme_onTertiary">#143723</color>
<color name="lemon_theme_tertiaryContainer">#2C4E38</color>
<color name="lemon_theme_onTertiaryContainer">#C5ECCE</color>
<color name="lemon_theme_error">#FFB4AB</color>
<color name="lemon_theme_onError">#690005</color>
<color name="lemon_theme_errorContainer">#93000A</color>
<color name="lemon_theme_onErrorContainer">#FFDAD6</color>
<color name="lemon_theme_background">#15130B</color>
<color name="lemon_theme_onBackground">#E8E2D4</color>
<color name="lemon_theme_surface">#15130B</color>
<color name="lemon_theme_onSurface">#E8E2D4</color>
<color name="lemon_theme_surfaceVariant">#4B4739</color>
<color name="lemon_theme_onSurfaceVariant">#CDC6B4</color>
<color name="lemon_theme_outline">#969080</color>
<color name="lemon_theme_outlineVariant">#4B4739</color>
<color name="lemon_theme_scrim">#000000</color>
<color name="lemon_theme_inverseSurface">#E8E2D4</color>
<color name="lemon_theme_inverseOnSurface">#333027</color>
<color name="lemon_theme_inversePrimary">#6D5E0F</color>
<color name="lemon_theme_primaryFixed">#F8E287</color>
<color name="lemon_theme_onPrimaryFixed">#221B00</color>
<color name="lemon_theme_primaryFixedDim">#DBC66E</color>
<color name="lemon_theme_onPrimaryFixedVariant">#534600</color>
<color name="lemon_theme_secondaryFixed">#EEE2BC</color>
<color name="lemon_theme_onSecondaryFixed">#211B04</color>
<color name="lemon_theme_secondaryFixedDim">#D1C6A1</color>
<color name="lemon_theme_onSecondaryFixedVariant">#4E472A</color>
<color name="lemon_theme_tertiaryFixed">#C5ECCE</color>
<color name="lemon_theme_onTertiaryFixed">#00210F</color>
<color name="lemon_theme_tertiaryFixedDim">#A9D0B3</color>
<color name="lemon_theme_onTertiaryFixedVariant">#2C4E38</color>
<color name="lemon_theme_surfaceDim">#15130B</color>
<color name="lemon_theme_surfaceBright">#3C3930</color>
<color name="lemon_theme_surfaceContainerLowest">#100E07</color>
<color name="lemon_theme_surfaceContainerLow">#1E1B13</color>
<color name="lemon_theme_surfaceContainer">#222017</color>
<color name="lemon_theme_surfaceContainerHigh">#2D2A21</color>
<color name="lemon_theme_surfaceContainerHighest">#38352B</color>
<color name="disabled">@color/md_dark_disabled</color>
<color name="background_prefs">#10303030</color>
+1
View File
@@ -29,6 +29,7 @@
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="screen_direction_value">
+1
View File
@@ -56,6 +56,7 @@
<string-array name="themes_item">
<item>动态取色</item>
<item>草野</item>
<item>柠檬</item>
<item>黑白</item>
</string-array>
+48
View File
@@ -99,6 +99,54 @@
<color name="wh_theme_surfaceContainerHigh">#EBE7E7</color>
<color name="wh_theme_surfaceContainerHighest">#E5E2E1</color>
<!-- Lemon Theme-->
<color name="lemon_theme_primary">#6D5E0F</color>
<color name="lemon_theme_onPrimary">#FFFFFF</color>
<color name="lemon_theme_primaryContainer">#F8E287</color>
<color name="lemon_theme_onPrimaryContainer">#534600</color>
<color name="lemon_theme_secondary">#665E40</color>
<color name="lemon_theme_onSecondary">#FFFFFF</color>
<color name="lemon_theme_secondaryContainer">#EEE2BC</color>
<color name="lemon_theme_onSecondaryContainer">#4E472A</color>
<color name="lemon_theme_tertiary">#43664E</color>
<color name="lemon_theme_onTertiary">#FFFFFF</color>
<color name="lemon_theme_tertiaryContainer">#C5ECCE</color>
<color name="lemon_theme_onTertiaryContainer">#2C4E38</color>
<color name="lemon_theme_error">#BA1A1A</color>
<color name="lemon_theme_onError">#FFFFFF</color>
<color name="lemon_theme_errorContainer">#FFDAD6</color>
<color name="lemon_theme_onErrorContainer">#93000A</color>
<color name="lemon_theme_background">#FFF9EE</color>
<color name="lemon_theme_onBackground">#1E1B13</color>
<color name="lemon_theme_surface">#FFF9EE</color>
<color name="lemon_theme_onSurface">#1E1B13</color>
<color name="lemon_theme_surfaceVariant">#EAE2D0</color>
<color name="lemon_theme_onSurfaceVariant">#4B4739</color>
<color name="lemon_theme_outline">#7C7767</color>
<color name="lemon_theme_outlineVariant">#CDC6B4</color>
<color name="lemon_theme_scrim">#000000</color>
<color name="lemon_theme_inverseSurface">#333027</color>
<color name="lemon_theme_inverseOnSurface">#F7F0E2</color>
<color name="lemon_theme_inversePrimary">#DBC66E</color>
<color name="lemon_theme_primaryFixed">#F8E287</color>
<color name="lemon_theme_onPrimaryFixed">#221B00</color>
<color name="lemon_theme_primaryFixedDim">#DBC66E</color>
<color name="lemon_theme_onPrimaryFixedVariant">#534600</color>
<color name="lemon_theme_secondaryFixed">#EEE2BC</color>
<color name="lemon_theme_onSecondaryFixed">#211B04</color>
<color name="lemon_theme_secondaryFixedDim">#D1C6A1</color>
<color name="lemon_theme_onSecondaryFixedVariant">#4E472A</color>
<color name="lemon_theme_tertiaryFixed">#C5ECCE</color>
<color name="lemon_theme_onTertiaryFixed">#00210F</color>
<color name="lemon_theme_tertiaryFixedDim">#A9D0B3</color>
<color name="lemon_theme_onTertiaryFixedVariant">#2C4E38</color>
<color name="lemon_theme_surfaceDim">#E0D9CC</color>
<color name="lemon_theme_surfaceBright">#FFF9EE</color>
<color name="lemon_theme_surfaceContainerLowest">#FFFFFF</color>
<color name="lemon_theme_surfaceContainerLow">#FAF3E5</color>
<color name="lemon_theme_surfaceContainer">#F4EDDF</color>
<color name="lemon_theme_surfaceContainerHigh">#EEE8DA</color>
<color name="lemon_theme_surfaceContainerHighest">#E8E2D4</color>
<color name="disabled">@color/md_light_disabled</color>
+49
View File
@@ -129,4 +129,53 @@
<item name="colorSurfaceContainerHighest">@color/wh_theme_surfaceContainerHighest</item>
</style>
<style name="Theme.Base.Lemon" parent="Base.AppTheme">
<item name="colorPrimary">@color/lemon_theme_primary</item>
<item name="colorOnPrimary">@color/lemon_theme_onPrimary</item>
<item name="colorPrimaryContainer">@color/lemon_theme_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/lemon_theme_onPrimaryContainer</item>
<item name="colorSecondary">@color/lemon_theme_secondary</item>
<item name="colorOnSecondary">@color/lemon_theme_onSecondary</item>
<item name="colorSecondaryContainer">@color/lemon_theme_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/lemon_theme_onSecondaryContainer</item>
<item name="colorTertiary">@color/lemon_theme_tertiary</item>
<item name="colorOnTertiary">@color/lemon_theme_onTertiary</item>
<item name="colorTertiaryContainer">@color/lemon_theme_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/lemon_theme_onTertiaryContainer</item>
<item name="colorError">@color/lemon_theme_error</item>
<item name="colorOnError">@color/lemon_theme_onError</item>
<item name="colorErrorContainer">@color/lemon_theme_errorContainer</item>
<item name="colorOnErrorContainer">@color/lemon_theme_onErrorContainer</item>
<item name="android:colorBackground">@color/lemon_theme_background</item>
<item name="colorOnBackground">@color/lemon_theme_onBackground</item>
<item name="colorSurface">@color/lemon_theme_surface</item>
<item name="colorOnSurface">@color/lemon_theme_onSurface</item>
<item name="colorSurfaceVariant">@color/lemon_theme_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/lemon_theme_onSurfaceVariant</item>
<item name="colorOutline">@color/lemon_theme_outline</item>
<item name="colorOutlineVariant">@color/lemon_theme_outlineVariant</item>
<item name="colorSurfaceInverse">@color/lemon_theme_inverseSurface</item>
<item name="colorOnSurfaceInverse">@color/lemon_theme_inverseOnSurface</item>
<item name="colorPrimaryInverse">@color/lemon_theme_inversePrimary</item>
<item name="colorPrimaryFixed">@color/lemon_theme_primaryFixed</item>
<item name="colorOnPrimaryFixed">@color/lemon_theme_onPrimaryFixed</item>
<item name="colorPrimaryFixedDim">@color/lemon_theme_primaryFixedDim</item>
<item name="colorOnPrimaryFixedVariant">@color/lemon_theme_onPrimaryFixedVariant</item>
<item name="colorSecondaryFixed">@color/lemon_theme_secondaryFixed</item>
<item name="colorOnSecondaryFixed">@color/lemon_theme_onSecondaryFixed</item>
<item name="colorSecondaryFixedDim">@color/lemon_theme_secondaryFixedDim</item>
<item name="colorOnSecondaryFixedVariant">@color/lemon_theme_onSecondaryFixedVariant</item>
<item name="colorTertiaryFixed">@color/lemon_theme_tertiaryFixed</item>
<item name="colorOnTertiaryFixed">@color/lemon_theme_onTertiaryFixed</item>
<item name="colorTertiaryFixedDim">@color/lemon_theme_tertiaryFixedDim</item>
<item name="colorOnTertiaryFixedVariant">@color/lemon_theme_onTertiaryFixedVariant</item>
<item name="colorSurfaceDim">@color/lemon_theme_surfaceDim</item>
<item name="colorSurfaceBright">@color/lemon_theme_surfaceBright</item>
<item name="colorSurfaceContainerLowest">@color/lemon_theme_surfaceContainerLowest</item>
<item name="colorSurfaceContainerLow">@color/lemon_theme_surfaceContainerLow</item>
<item name="colorSurfaceContainer">@color/lemon_theme_surfaceContainer</item>
<item name="colorSurfaceContainerHigh">@color/lemon_theme_surfaceContainerHigh</item>
<item name="colorSurfaceContainerHighest">@color/lemon_theme_surfaceContainerHighest</item>
</style>
</resources>