mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 19:11:08 +00:00
Inner Gamer RGB theme with a speed slider; keep the colour picker's hex box in view above the keyboard
The hex box sat at the bottom of the picker, so with the keyboard up the dialog was cut off and the field could not be seen. While the box has focus the dialog now scrolls to its end, and again whenever the visible height changes, so the hex box and OK / Cancel stay above the keyboard. Inner Gamer is a new theme just above Gradient. Its accent walks round the colour wheel on a Compose infinite transition, so Android's animation clock drives it and it holds still when animations are off. The hue moves in 3 degree steps so the app restyles only when the colour visibly changes. Setup shows a Speed slider (1 to 10) while it is selected. The palette comes from ThemeColors.palette, so button text stays readable at every hue.
This commit is contained in:
1 parent
bf4aa58c68
commit
f7acb7fcd7
41 files changed
+263
-4
No files matched your search
@@ -764,6 +764,14 @@ object SessionPrefs {
|
||||
it.getInt("gradientSecondary", com.droiddeck.launcher.ui.Themes.DEFAULT_SECONDARY)
|
||||
}
|
||||
|
||||
/** How fast the Inner Gamer theme cycles its colours, 1 to 10. */
|
||||
fun rgbSpeed(context: Context): Int =
|
||||
prefs(context).getInt("innerGamerSpeed", com.droiddeck.launcher.ui.Themes.DEFAULT_RGB_SPEED).coerceIn(1, com.droiddeck.launcher.ui.Themes.RGB_SPEEDS)
|
||||
|
||||
fun setRgbSpeed(context: Context, speed: Int) {
|
||||
prefs(context).edit().putInt("innerGamerSpeed", speed.coerceIn(1, com.droiddeck.launcher.ui.Themes.RGB_SPEEDS)).apply()
|
||||
}
|
||||
|
||||
fun setGradientColors(context: Context, primary: Int, secondary: Int) {
|
||||
prefs(context).edit().putInt("gradientPrimary", primary).putInt("gradientSecondary", secondary).apply()
|
||||
}
|
||||
|
||||
@@ -308,6 +308,7 @@ internal fun AppDialog(
|
||||
width: Dp? = null, fitContent: Boolean = false,
|
||||
back: (() -> Unit)? = null,
|
||||
scrollable: Boolean = true,
|
||||
scrollState: androidx.compose.foundation.ScrollState = rememberScrollState(),
|
||||
content: @Composable ColumnScope.() -> Unit,
|
||||
) {
|
||||
val pal = LocalPalette.current
|
||||
@@ -345,7 +346,7 @@ internal fun AppDialog(
|
||||
.blockTouches()
|
||||
.controllerBack(back ?: close)
|
||||
.then(modifier)
|
||||
.then(if (scrollable) Modifier.verticalScroll(rememberScrollState()) else Modifier)
|
||||
.then(if (scrollable) Modifier.verticalScroll(scrollState) else Modifier)
|
||||
.padding(horizontal = 18.dp, vertical = 16.dp),
|
||||
content = content,
|
||||
)
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -70,12 +71,15 @@ internal fun ColorPickerDialog(title: String, initial: Int, onDismiss: () -> Uni
|
||||
var hexText by remember { mutableStateOf(ThemeColors.hex(initial)) }
|
||||
val current = ThemeColors.fromHsv(hue, sat, value)
|
||||
val first = remember { FocusRequester() }
|
||||
val scroll = rememberScrollState()
|
||||
var typingHex by remember { mutableStateOf(false) }
|
||||
LaunchedEffect(Unit) { focusSoon { first } }
|
||||
LaunchedEffect(typingHex, scroll.maxValue) { if (typingHex) scroll.animateScrollTo(scroll.maxValue) }
|
||||
fun picked(h: Float = hue, s: Float = sat, v: Float = value) {
|
||||
hue = h.coerceIn(0f, 360f); sat = s.coerceIn(0f, 1f); value = v.coerceIn(0f, 1f)
|
||||
hexText = ThemeColors.hex(ThemeColors.fromHsv(hue, sat, value))
|
||||
}
|
||||
AppDialog(shown, close, "colorPicker", wide = false, maxWidth = 460.dp) {
|
||||
AppDialog(shown, close, "colorPicker", wide = false, maxWidth = 460.dp, scrollState = scroll) {
|
||||
DialogTitleRow(title, close)
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(14.dp), verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth()) {
|
||||
ColorWheel(hue, sat, value) { h, s -> picked(h = h, s = s) }
|
||||
@@ -95,6 +99,7 @@ internal fun ColorPickerDialog(title: String, initial: Int, onDismiss: () -> Uni
|
||||
ThemeColors.parseHex(text)?.let { argb -> ThemeColors.toHsv(argb).let { hsv -> hue = hsv.h; sat = hsv.s; value = hsv.v } }
|
||||
},
|
||||
label = "", keyboardType = KeyboardType.Ascii, imeAction = ImeAction.Done, placeholder = stringResource(R.string.theme_color_hex),
|
||||
onFocusChange = { typingHex = it },
|
||||
onDone = { ThemeColors.parseHex(hexText)?.let { onApply(it); close() } },
|
||||
)
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(8.dp), modifier = Modifier.fillMaxWidth()) {
|
||||
|
||||
@@ -359,6 +359,7 @@ internal fun SetupPanel(
|
||||
}
|
||||
}
|
||||
}
|
||||
if (s.theme == Themes.INNER_GAMER) RgbSpeedRow()
|
||||
if (s.theme == Themes.GRADIENT) GradientColorRows()
|
||||
ChoiceRow(
|
||||
host, "app-scale", stringResource(R.string.setup_app_scale), stringResource(R.string.setup_app_scale_hint),
|
||||
@@ -792,6 +793,13 @@ private fun LanguageRow(host: MenuHost, chosen: String, onPick: (String) -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
/** How fast Inner Gamer cycles its colours. */
|
||||
@Composable
|
||||
private fun RgbSpeedRow() {
|
||||
val ctx = androidx.compose.ui.platform.LocalContext.current.applicationContext
|
||||
SliderRow(stringResource(R.string.theme_rgb_speed), stringResource(R.string.theme_rgb_speed_hint), Themes.rgbSpeed, 1..Themes.RGB_SPEEDS) { Themes.setRgbSpeed(ctx, it) }
|
||||
}
|
||||
|
||||
/** The two colours of the Gradient theme, each a small square that opens the colour picker. */
|
||||
@Composable
|
||||
private fun GradientColorRows() {
|
||||
|
||||
@@ -3,7 +3,14 @@ package com.droiddeck.launcher.ui
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.darkColorScheme
|
||||
import androidx.compose.animation.core.LinearEasing
|
||||
import androidx.compose.animation.core.RepeatMode
|
||||
import androidx.compose.animation.core.animateFloat
|
||||
import androidx.compose.animation.core.infiniteRepeatable
|
||||
import androidx.compose.animation.core.rememberInfiniteTransition
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.SideEffect
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.runtime.getValue
|
||||
@@ -13,6 +20,7 @@ import android.content.Context
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.luminance
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import com.droiddeck.launcher.R
|
||||
import androidx.compose.ui.platform.LocalConfiguration
|
||||
@@ -33,6 +41,7 @@ object Themes {
|
||||
const val PAPER = "paper"
|
||||
const val ICON_BLUE = "blue"
|
||||
const val ELECTRIC = "electric"
|
||||
const val INNER_GAMER = "inner_gamer"
|
||||
const val GRADIENT = "gradient"
|
||||
|
||||
const val DEFAULT_PRIMARY = 0xFF8B5CF6.toInt()
|
||||
@@ -42,10 +51,42 @@ object Themes {
|
||||
var gradientColors by mutableStateOf(DEFAULT_PRIMARY to DEFAULT_SECONDARY)
|
||||
private set
|
||||
|
||||
const val RGB_SPEEDS = 10
|
||||
const val DEFAULT_RGB_SPEED = 3
|
||||
const val RGB_HUE_STEP = 3f
|
||||
|
||||
/** How fast Inner Gamer cycles, 1 (slow) to [RGB_SPEEDS] (fast). */
|
||||
var rgbSpeed by mutableStateOf(DEFAULT_RGB_SPEED)
|
||||
private set
|
||||
|
||||
/** Where Inner Gamer is on the colour wheel, in whole [RGB_HUE_STEP] steps so the app restyles only when the colour visibly moves. */
|
||||
var rgbHue by mutableStateOf(0f)
|
||||
private set
|
||||
|
||||
fun setRgbHue(hue: Float) {
|
||||
rgbHue = hue
|
||||
}
|
||||
|
||||
fun setRgbSpeed(context: Context, speed: Int) {
|
||||
val value = speed.coerceIn(1, RGB_SPEEDS)
|
||||
SessionPrefs.setRgbSpeed(context, value)
|
||||
rgbSpeed = value
|
||||
}
|
||||
|
||||
/** Milliseconds for one trip round the colour wheel. */
|
||||
fun rgbCycleMillis(speed: Int): Int = 30_000 / speed.coerceIn(1, RGB_SPEEDS)
|
||||
|
||||
fun loadGradient(context: Context) {
|
||||
gradientColors = SessionPrefs.gradientColors(context)
|
||||
rgbSpeed = SessionPrefs.rgbSpeed(context)
|
||||
}
|
||||
|
||||
/** The Inner Gamer palette at one point on the colour wheel. */
|
||||
fun innerGamer(hue: Float): Palette = ThemeColors.palette(
|
||||
Color.hsv(hue % 360f, 0.9f, 1f).toArgb(), Color.hsv((hue + 60f) % 360f, 0.9f, 1f).toArgb(),
|
||||
R.string.theme_inner_gamer, R.string.theme_inner_gamer_detail, INNER_GAMER,
|
||||
)
|
||||
|
||||
fun setGradient(context: Context, primary: Int, secondary: Int) {
|
||||
SessionPrefs.setGradientColors(context, primary, secondary)
|
||||
gradientColors = primary to secondary
|
||||
@@ -87,10 +128,12 @@ object Themes {
|
||||
primary = Color(0xFF2E86FF), primary2 = Color(0xFF2684FF), onPrimary = Color(0xFF03111F), signal = Color(0xFF2E86FF),
|
||||
good = Color(0xFF4CD37F),
|
||||
),
|
||||
innerGamer(0f),
|
||||
ThemeColors.palette(DEFAULT_PRIMARY, DEFAULT_SECONDARY, R.string.theme_gradient, R.string.theme_gradient_detail),
|
||||
)
|
||||
|
||||
fun byId(id: String): Palette {
|
||||
if (id == INNER_GAMER) return innerGamer(rgbHue)
|
||||
if (id == GRADIENT) return ThemeColors.palette(gradientColors.first, gradientColors.second, R.string.theme_gradient, R.string.theme_gradient_detail)
|
||||
return all.firstOrNull { it.id == id } ?: all[0]
|
||||
}
|
||||
@@ -103,6 +146,7 @@ val Palette.onSignal: Color get() = if (signal.luminance() > 0.18f) Color(0xFF03
|
||||
@Composable
|
||||
fun DroidDeckTheme(theme: String? = null, appScale: Int = AppUiPrefs.DEFAULT_SCALE, content: @Composable () -> Unit) {
|
||||
val id = theme ?: SessionPrefs.theme(LocalContext.current)
|
||||
if (id == Themes.INNER_GAMER) InnerGamerHue(Themes.rgbSpeed)
|
||||
val p = Themes.byId(id)
|
||||
val scheme = darkColorScheme(
|
||||
primary = p.primary, onPrimary = p.onPrimary, secondary = p.onSurfaceVariant,
|
||||
@@ -121,3 +165,14 @@ fun DroidDeckTheme(theme: String? = null, appScale: Int = AppUiPrefs.DEFAULT_SCA
|
||||
LocalConfiguration provides configuration,
|
||||
) { MaterialTheme(colorScheme = scheme, content = content) }
|
||||
}
|
||||
|
||||
/** Turns the colour wheel on the system's own animation clock; with animations off, in the app or in Android, the colour holds still. */
|
||||
@Composable
|
||||
private fun InnerGamerHue(speed: Int) {
|
||||
if (Motion.scale == 0f) return
|
||||
val hue by rememberInfiniteTransition(label = "innerGamer").animateFloat(
|
||||
0f, 360f, infiniteRepeatable(tween(Motion.ms(Themes.rgbCycleMillis(speed)).coerceAtLeast(1), easing = LinearEasing), RepeatMode.Restart), label = "hue",
|
||||
)
|
||||
val step = Themes.RGB_HUE_STEP
|
||||
SideEffect { Themes.setRgbHue((hue / step).toInt() * step) }
|
||||
}
|
||||
@@ -132,7 +132,7 @@ internal object ThemeColors {
|
||||
}
|
||||
}
|
||||
|
||||
fun palette(primary: Int, secondary: Int, label: Int, detail: Int): Palette {
|
||||
fun palette(primary: Int, secondary: Int, label: Int, detail: Int, id: String = Themes.GRADIENT): Palette {
|
||||
val seen = readable(primary)
|
||||
val seenSecond = readable(secondary)
|
||||
val ink = inkFor(seen, seenSecond)
|
||||
@@ -146,7 +146,7 @@ internal object ThemeColors {
|
||||
second = nextSecond
|
||||
}
|
||||
return Palette(
|
||||
Themes.GRADIENT, label, detail,
|
||||
id, label, detail,
|
||||
background = tint(first, 0.50f, 0.045f), surface = tint(first, 0.45f, 0.075f), surfaceVariant = tint(first, 0.42f, 0.115f),
|
||||
line = tint(first, 0.40f, 0.16f), line2 = tint(first, 0.36f, 0.22f),
|
||||
onBackground = tint(first, 0.05f, 0.97f), onSurfaceVariant = tint(first, 0.16f, 0.68f),
|
||||
|
||||
@@ -1457,6 +1457,10 @@
|
||||
<string name="theme_icon_blue_detail">خلفية سوداء ونص أبيض، والأزرق لكل عنصر محدَّد أو مُركَّز عليه أو مضغوط.</string>
|
||||
<string name="theme_electric">كحلي كهربائي</string>
|
||||
<string name="theme_electric_detail">أزرق أكثر سطوعًا، على أسطح تميل إلى الكحلي بدلاً من الرمادي.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">ألوان تتدرّج عبر ألوان قوس قزح. تتبع إعدادات الرسوم المتحركة في Android.</string>
|
||||
<string name="theme_rgb_speed">السرعة</string>
|
||||
<string name="theme_rgb_speed_hint">مدى سرعة تغيّر الألوان.</string>
|
||||
<string name="theme_gradient">تدرج لوني</string>
|
||||
<string name="theme_gradient_detail">لونك الأساسي والثانوي، ممزوجان على الأزرار وعناصر التمييز.</string>
|
||||
<string name="theme_gradient_primary">الأساسي</string>
|
||||
|
||||
@@ -1466,6 +1466,10 @@
|
||||
<string name="theme_icon_blue_detail">Fondo negro, texto blanco y el azul para todo lo seleccionado, enfocado o presionado.</string>
|
||||
<string name="theme_electric">Azul marino eléctrico</string>
|
||||
<string name="theme_electric_detail">Un azul más vivo, sobre superficies que tiran a azul marino en vez de gris.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Colores que recorren el arcoíris. Respeta los ajustes de animación de Android.</string>
|
||||
<string name="theme_rgb_speed">Velocidad</string>
|
||||
<string name="theme_rgb_speed_hint">Qué tan rápido cambian los colores.</string>
|
||||
<string name="theme_gradient">Degradado</string>
|
||||
<string name="theme_gradient_detail">Tus propios colores primario y secundario, combinados en botones y resaltados.</string>
|
||||
<string name="theme_gradient_primary">Primario</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Черен фон, бял текст, синьото за всичко избрано, на фокус или натиснато.</string>
|
||||
<string name="theme_electric">Яркосиньо</string>
|
||||
<string name="theme_electric_detail">По-яркото синьо, върху повърхности, по-близки до тъмносиньо, вместо сиво.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Цветове, които преминават през дъгата. Следва настройките за анимации на Android.</string>
|
||||
<string name="theme_rgb_speed">Скорост</string>
|
||||
<string name="theme_rgb_speed_hint">Колко бързо се сменят цветовете.</string>
|
||||
<string name="theme_gradient">Градиент</string>
|
||||
<string name="theme_gradient_detail">Вашите основен и вторичен цвят, смесени в бутоните и акцентите.</string>
|
||||
<string name="theme_gradient_primary">Основен</string>
|
||||
|
||||
@@ -1429,6 +1429,10 @@
|
||||
<string name="theme_icon_blue_detail">Černé pozadí, bílé písmo, modrá pro vše vybrané, zaměřené nebo stisknuté.</string>
|
||||
<string name="theme_electric">Elektrická modř</string>
|
||||
<string name="theme_electric_detail">Jasnější modrá na povrchách, které jsou spíše tmavomodré než šedé.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Barvy, které procházejí celou duhu. Respektuje nastavení animací v Androidu.</string>
|
||||
<string name="theme_rgb_speed">Rychlost</string>
|
||||
<string name="theme_rgb_speed_hint">Jak rychle se barvy střídají.</string>
|
||||
<string name="theme_gradient">Přechod</string>
|
||||
<string name="theme_gradient_detail">Vaše vlastní primární a sekundární barva, prolnuté na tlačítkách a zvýrazněních.</string>
|
||||
<string name="theme_gradient_primary">Primární</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Sort baggrund, hvid skrift, blå til alt, der er valgt, fokuseret eller trykket.</string>
|
||||
<string name="theme_electric">Elektrisk marineblå</string>
|
||||
<string name="theme_electric_detail">Den blå er klarere, på overflader der trækker mod marineblåt i stedet for gråt.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Farver, der skifter gennem regnbuen. Følger Androids animationsindstillinger.</string>
|
||||
<string name="theme_rgb_speed">Hastighed</string>
|
||||
<string name="theme_rgb_speed_hint">Hvor hurtigt farverne skifter.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Dine egne primære og sekundære farver, blandet på knapper og fremhævninger.</string>
|
||||
<string name="theme_gradient_primary">Primær</string>
|
||||
|
||||
@@ -1393,6 +1393,10 @@
|
||||
<string name="theme_icon_blue_detail">Schwarzer Grund, weiße Schrift, das Blau für alles Ausgewählte, Fokussierte oder Gedrückte.</string>
|
||||
<string name="theme_electric">Elektrisches Marineblau</string>
|
||||
<string name="theme_electric_detail">Das Blau heller, auf Flächen, die eher zu Marineblau als zu Grau tendieren.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Farben, die durch den Regenbogen wechseln. Folgt den Animationseinstellungen von Android.</string>
|
||||
<string name="theme_rgb_speed">Geschwindigkeit</string>
|
||||
<string name="theme_rgb_speed_hint">Wie schnell die Farben wechseln.</string>
|
||||
<string name="theme_gradient">Farbverlauf</string>
|
||||
<string name="theme_gradient_detail">Eigene Primär- und Sekundärfarbe, als Verlauf auf Schaltflächen und Hervorhebungen.</string>
|
||||
<string name="theme_gradient_primary">Primär</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Μαύρο φόντο, λευκά γράμματα, το μπλε για ό,τι είναι επιλεγμένο, εστιασμένο ή πατημένο.</string>
|
||||
<string name="theme_electric">Ηλεκτρικό ναυτικό μπλε</string>
|
||||
<string name="theme_electric_detail">Το μπλε πιο έντονο, σε επιφάνειες που τείνουν προς το ναυτικό μπλε αντί για γκρι.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Χρώματα που διατρέχουν το ουράνιο τόξο. Ακολουθεί τις ρυθμίσεις animation του Android.</string>
|
||||
<string name="theme_rgb_speed">Ταχύτητα</string>
|
||||
<string name="theme_rgb_speed_hint">Πόσο γρήγορα αλλάζουν τα χρώματα.</string>
|
||||
<string name="theme_gradient">Διαβάθμιση</string>
|
||||
<string name="theme_gradient_detail">Δικά σας πρωτεύον και δευτερεύον χρώμα, σε μίξη στα κουμπιά και τις επισημάνσεις.</string>
|
||||
<string name="theme_gradient_primary">Πρωτεύον</string>
|
||||
|
||||
@@ -1417,6 +1417,10 @@
|
||||
<string name="theme_icon_blue_detail">Fondo negro, texto blanco y el azul para todo lo seleccionado, enfocado o pulsado.</string>
|
||||
<string name="theme_electric">Azul marino eléctrico</string>
|
||||
<string name="theme_electric_detail">Un azul más vivo, sobre superficies que tiran a azul marino en vez de gris.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Colores que recorren el arcoíris. Respeta los ajustes de animación de Android.</string>
|
||||
<string name="theme_rgb_speed">Velocidad</string>
|
||||
<string name="theme_rgb_speed_hint">Con qué rapidez cambian los colores.</string>
|
||||
<string name="theme_gradient">Degradado</string>
|
||||
<string name="theme_gradient_detail">Tus propios colores primario y secundario, combinados en botones y resaltados.</string>
|
||||
<string name="theme_gradient_primary">Primario</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Musta pohja, valkoinen teksti, sininen kaikessa valitussa, kohdistetussa tai painetussa.</string>
|
||||
<string name="theme_electric">Sähköinen laivastonsininen</string>
|
||||
<string name="theme_electric_detail">Sininen kirkkaampana pinnoilla, jotka taittuvat harmaan sijaan laivastonsiniseen.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Värit, jotka kiertävät sateenkaaren läpi. Noudattaa Androidin animaatioasetuksia.</string>
|
||||
<string name="theme_rgb_speed">Nopeus</string>
|
||||
<string name="theme_rgb_speed_hint">Kuinka nopeasti värit vaihtuvat.</string>
|
||||
<string name="theme_gradient">Liukuväri</string>
|
||||
<string name="theme_gradient_detail">Omat ensisijainen ja toissijainen värisi, sulautettuina painikkeisiin ja korostuksiin.</string>
|
||||
<string name="theme_gradient_primary">Ensisijainen</string>
|
||||
|
||||
@@ -1417,6 +1417,10 @@
|
||||
<string name="theme_icon_blue_detail">Fond noir, texte blanc, et le bleu pour tout élément sélectionné, ciblé ou pressé.</string>
|
||||
<string name="theme_electric">Marine électrique</string>
|
||||
<string name="theme_electric_detail">Un bleu plus vif, sur des surfaces qui tirent vers le marine plutôt que vers le gris.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Des couleurs qui parcourent l\'arc-en-ciel. Respecte les réglages d\'animation d\'Android.</string>
|
||||
<string name="theme_rgb_speed">Vitesse</string>
|
||||
<string name="theme_rgb_speed_hint">La vitesse de défilement des couleurs.</string>
|
||||
<string name="theme_gradient">Dégradé</string>
|
||||
<string name="theme_gradient_detail">Vos propres couleurs primaire et secondaire, fondues sur les boutons et les éléments en surbrillance.</string>
|
||||
<string name="theme_gradient_primary">Primaire</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">काली ज़मीन, सफ़ेद टाइप, चुने, फ़ोकस या दबाए गए हर चीज़ के लिए ब्लू रंग।</string>
|
||||
<string name="theme_electric">इलेक्ट्रिक नेवी</string>
|
||||
<string name="theme_electric_detail">ब्लू रंग ज़्यादा चमकीला, उन सतहों पर जो ग्रे के बजाय नेवी की ओर झुकती हैं।</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">इंद्रधनुष के रंगों में बदलते रंग। Android की एनिमेशन सेटिंग का पालन करता है।</string>
|
||||
<string name="theme_rgb_speed">गति</string>
|
||||
<string name="theme_rgb_speed_hint">रंग कितनी तेज़ी से बदलें।</string>
|
||||
<string name="theme_gradient">ग्रेडिएंट</string>
|
||||
<string name="theme_gradient_detail">आपके अपने प्राथमिक और द्वितीयक रंग, बटनों और हाइलाइट पर मिश्रित।</string>
|
||||
<string name="theme_gradient_primary">प्राथमिक</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Fekete alap, fehér betűk, a kék minden kijelölt, fókuszált vagy lenyomott elemhez.</string>
|
||||
<string name="theme_electric">Elektromos tengerészkék</string>
|
||||
<string name="theme_electric_detail">Fényesebb kék, szürke helyett tengerészkék felületeken.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">A szivárvány színein végigfutó színek. Követi az Android animációs beállításait.</string>
|
||||
<string name="theme_rgb_speed">Sebesség</string>
|
||||
<string name="theme_rgb_speed_hint">Milyen gyorsan váltanak a színek.</string>
|
||||
<string name="theme_gradient">Színátmenet</string>
|
||||
<string name="theme_gradient_detail">Saját elsődleges és másodlagos színed, átmenettel a gombokon és a kiemeléseken.</string>
|
||||
<string name="theme_gradient_primary">Elsődleges</string>
|
||||
|
||||
@@ -1387,6 +1387,10 @@
|
||||
<string name="theme_icon_blue_detail">Dasar hitam, tipe putih, biru untuk semua yang dipilih, difokuskan, atau ditekan.</string>
|
||||
<string name="theme_electric">Navy elektrik</string>
|
||||
<string name="theme_electric_detail">Biru yang lebih cerah, pada permukaan yang condong ke navy, bukan abu-abu.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Warna yang berganti menyusuri pelangi. Mengikuti pengaturan animasi Android.</string>
|
||||
<string name="theme_rgb_speed">Kecepatan</string>
|
||||
<string name="theme_rgb_speed_hint">Seberapa cepat warna berganti.</string>
|
||||
<string name="theme_gradient">Gradasi</string>
|
||||
<string name="theme_gradient_detail">Warna primer dan sekunder pilihan Anda, dipadukan pada tombol dan sorotan.</string>
|
||||
<string name="theme_gradient_primary">Primer</string>
|
||||
|
||||
@@ -1407,6 +1407,10 @@
|
||||
<string name="theme_icon_blue_detail">Fondo nero, testo bianco, il blu per tutto ciò che è selezionato, attivo o premuto.</string>
|
||||
<string name="theme_electric">Blu elettrico</string>
|
||||
<string name="theme_electric_detail">Il blu più brillante, su superfici che tendono al blu navy invece che al grigio.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Colori che scorrono lungo l\'arcobaleno. Rispetta le impostazioni di animazione di Android.</string>
|
||||
<string name="theme_rgb_speed">Velocità</string>
|
||||
<string name="theme_rgb_speed_hint">Quanto velocemente cambiano i colori.</string>
|
||||
<string name="theme_gradient">Gradiente</string>
|
||||
<string name="theme_gradient_detail">I tuoi colori primario e secondario, sfumati su pulsanti ed evidenziazioni.</string>
|
||||
<string name="theme_gradient_primary">Primario</string>
|
||||
|
||||
@@ -1389,6 +1389,10 @@
|
||||
<string name="theme_icon_blue_detail">黒の背景に白の文字、選択・フォーカス・押下時には青を使用します。</string>
|
||||
<string name="theme_electric">エレクトリックネイビー</string>
|
||||
<string name="theme_electric_detail">より明るい青を、グレーではなくネイビー寄りの画面に使用します。</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">虹色に変化し続けるカラー。Android のアニメーション設定に従います。</string>
|
||||
<string name="theme_rgb_speed">速度</string>
|
||||
<string name="theme_rgb_speed_hint">色が切り替わる速さ。</string>
|
||||
<string name="theme_gradient">グラデーション</string>
|
||||
<string name="theme_gradient_detail">自分で選んだプライマリとセカンダリの色を、ボタンやハイライトにグラデーションで使います。</string>
|
||||
<string name="theme_gradient_primary">プライマリ</string>
|
||||
|
||||
@@ -1389,6 +1389,10 @@
|
||||
<string name="theme_icon_blue_detail">검은색 배경에 흰색 글자, 선택·포커스·누름 상태에는 파란색을 사용합니다.</string>
|
||||
<string name="theme_electric">일렉트릭 네이비</string>
|
||||
<string name="theme_electric_detail">회색 대신 네이비 톤의 화면에 더 밝은 파란색을 사용합니다.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">무지개 색으로 계속 바뀌는 색상입니다. Android의 애니메이션 설정을 따릅니다.</string>
|
||||
<string name="theme_rgb_speed">속도</string>
|
||||
<string name="theme_rgb_speed_hint">색상이 바뀌는 속도입니다.</string>
|
||||
<string name="theme_gradient">그라데이션</string>
|
||||
<string name="theme_gradient_detail">직접 고른 기본색과 보조색이 버튼과 강조 표시에 섞여 적용됩니다.</string>
|
||||
<string name="theme_gradient_primary">기본색</string>
|
||||
|
||||
@@ -1387,6 +1387,10 @@
|
||||
<string name="theme_icon_blue_detail">Latar hitam, teks putih, biru untuk semua yang dipilih, difokus atau ditekan.</string>
|
||||
<string name="theme_electric">Navy elektrik</string>
|
||||
<string name="theme_electric_detail">Biru lebih cerah, pada permukaan yang lebih cenderung navy daripada kelabu.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Warna yang bertukar merentasi pelangi. Mengikut tetapan animasi Android.</string>
|
||||
<string name="theme_rgb_speed">Kelajuan</string>
|
||||
<string name="theme_rgb_speed_hint">Seberapa pantas warna bertukar.</string>
|
||||
<string name="theme_gradient">Kecerunan</string>
|
||||
<string name="theme_gradient_detail">Warna utama dan sekunder pilihan anda, diadun pada butang dan sorotan.</string>
|
||||
<string name="theme_gradient_primary">Utama</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Svart bakgrunn, hvit skrift, det blå for alt som er valgt, fokusert eller trykket.</string>
|
||||
<string name="theme_electric">Elektrisk marineblå</string>
|
||||
<string name="theme_electric_detail">Det blå lysere, på flater som lener mer mot marineblått enn grått.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Farger som går gjennom regnbuen. Følger Androids animasjonsinnstillinger.</string>
|
||||
<string name="theme_rgb_speed">Hastighet</string>
|
||||
<string name="theme_rgb_speed_hint">Hvor raskt fargene skifter.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Dine egne primær- og sekundærfarger, blandet på knapper og uthevinger.</string>
|
||||
<string name="theme_gradient_primary">Primær</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Zwarte achtergrond, witte tekst, het blauw voor alles wat geselecteerd, gefocust of ingedrukt is.</string>
|
||||
<string name="theme_electric">Elektrisch marineblauw</string>
|
||||
<string name="theme_electric_detail">Het blauw feller, op vlakken die naar marineblauw neigen in plaats van grijs.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Kleuren die door de regenboog lopen. Volgt de animatie-instellingen van Android.</string>
|
||||
<string name="theme_rgb_speed">Snelheid</string>
|
||||
<string name="theme_rgb_speed_hint">Hoe snel de kleuren wisselen.</string>
|
||||
<string name="theme_gradient">Kleurverloop</string>
|
||||
<string name="theme_gradient_detail">Je eigen primaire en secundaire kleur, doorlopend op knoppen en accenten.</string>
|
||||
<string name="theme_gradient_primary">Primair</string>
|
||||
|
||||
@@ -1429,6 +1429,10 @@
|
||||
<string name="theme_icon_blue_detail">Czarne tło, biały tekst i niebieski dla wszystkiego, co zaznaczone, aktywne lub naciśnięte.</string>
|
||||
<string name="theme_electric">Elektryczny granat</string>
|
||||
<string name="theme_electric_detail">Jaśniejszy niebieski na powierzchniach wpadających w granat zamiast w szarość.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Kolory przechodzące przez całą tęczę. Szanuje ustawienia animacji Androida.</string>
|
||||
<string name="theme_rgb_speed">Prędkość</string>
|
||||
<string name="theme_rgb_speed_hint">Jak szybko zmieniają się kolory.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Własny kolor podstawowy i dodatkowy, płynnie przechodzące na przyciskach i wyróżnieniach.</string>
|
||||
<string name="theme_gradient_primary">Podstawowy</string>
|
||||
|
||||
@@ -1407,6 +1407,10 @@
|
||||
<string name="theme_icon_blue_detail">Fundo preto, texto branco e o azul para tudo o que está selecionado, focado ou premido.</string>
|
||||
<string name="theme_electric">Azul-marinho elétrico</string>
|
||||
<string name="theme_electric_detail">O azul mais vivo, em superfícies que tendem para o azul-marinho em vez do cinzento.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Cores que percorrem o arco-íris. Respeita as definições de animação do Android.</string>
|
||||
<string name="theme_rgb_speed">Velocidade</string>
|
||||
<string name="theme_rgb_speed_hint">Com que rapidez as cores mudam.</string>
|
||||
<string name="theme_gradient">Gradiente</string>
|
||||
<string name="theme_gradient_detail">As suas próprias cores primária e secundária, combinadas nos botões e destaques.</string>
|
||||
<string name="theme_gradient_primary">Primária</string>
|
||||
|
||||
@@ -1407,6 +1407,10 @@
|
||||
<string name="theme_icon_blue_detail">Fundo preto, texto branco e o azul em tudo que estiver selecionado, em foco ou pressionado.</string>
|
||||
<string name="theme_electric">Marinho elétrico</string>
|
||||
<string name="theme_electric_detail">O azul mais vivo, sobre superfícies puxadas para o marinho em vez do cinza.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Cores que percorrem o arco-íris. Respeita as configurações de animação do Android.</string>
|
||||
<string name="theme_rgb_speed">Velocidade</string>
|
||||
<string name="theme_rgb_speed_hint">Com que rapidez as cores mudam.</string>
|
||||
<string name="theme_gradient">Gradiente</string>
|
||||
<string name="theme_gradient_detail">Suas próprias cores primária e secundária, combinadas em botões e destaques.</string>
|
||||
<string name="theme_gradient_primary">Primária</string>
|
||||
|
||||
@@ -1415,6 +1415,10 @@
|
||||
<string name="theme_icon_blue_detail">Fundal negru, text alb, albastrul pentru tot ce este selectat, focalizat sau apăsat.</string>
|
||||
<string name="theme_electric">Bleumarin electric</string>
|
||||
<string name="theme_electric_detail">Albastrul mai strălucitor, pe suprafețe care tind spre bleumarin în loc de gri.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Culori care parcurg curcubeul. Respectă setările de animație din Android.</string>
|
||||
<string name="theme_rgb_speed">Viteză</string>
|
||||
<string name="theme_rgb_speed_hint">Cât de repede se schimbă culorile.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Culorile tale primară și secundară, combinate pe butoane și evidențieri.</string>
|
||||
<string name="theme_gradient_primary">Primară</string>
|
||||
|
||||
@@ -1431,6 +1431,10 @@
|
||||
<string name="theme_icon_blue_detail">Черный фон, белый текст, синий — для всего выбранного, активного или нажатого.</string>
|
||||
<string name="theme_electric">Электрик</string>
|
||||
<string name="theme_electric_detail">Более яркий синий на поверхностях темно-синего, а не серого оттенка.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Цвета, плавно переходящие по всей радуге. Учитывает настройки анимации Android.</string>
|
||||
<string name="theme_rgb_speed">Скорость</string>
|
||||
<string name="theme_rgb_speed_hint">Как быстро меняются цвета.</string>
|
||||
<string name="theme_gradient">Градиент</string>
|
||||
<string name="theme_gradient_detail">Ваши основной и дополнительный цвета, плавно переходящие на кнопках и выделениях.</string>
|
||||
<string name="theme_gradient_primary">Основной</string>
|
||||
|
||||
@@ -1401,6 +1401,10 @@
|
||||
<string name="theme_icon_blue_detail">Svart bakgrund, vit text, den blå färgen för allt som är markerat, i fokus eller nedtryckt.</string>
|
||||
<string name="theme_electric">Elektrisk marinblå</string>
|
||||
<string name="theme_electric_detail">Den blå färgen klarare, på ytor som lutar åt marinblått i stället för grått.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Färger som växlar genom regnbågen. Följer Androids animationsinställningar.</string>
|
||||
<string name="theme_rgb_speed">Hastighet</string>
|
||||
<string name="theme_rgb_speed_hint">Hur snabbt färgerna växlar.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Dina egna primära och sekundära färger, blandade på knappar och markeringar.</string>
|
||||
<string name="theme_gradient_primary">Primär</string>
|
||||
|
||||
@@ -1387,6 +1387,10 @@
|
||||
<string name="theme_icon_blue_detail">พื้นดำ ตัวอักษรขาว สีฟ้าสำหรับทุกสิ่งที่ถูกเลือก โฟกัส หรือกด</string>
|
||||
<string name="theme_electric">กรมท่าไฟฟ้า</string>
|
||||
<string name="theme_electric_detail">สีฟ้าสว่างขึ้น บนพื้นผิวที่เอียงไปทางกรมท่ามากกว่าเทา</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">สีที่เปลี่ยนวนไปตามสายรุ้ง ทำงานตามการตั้งค่าแอนิเมชันของ Android</string>
|
||||
<string name="theme_rgb_speed">ความเร็ว</string>
|
||||
<string name="theme_rgb_speed_hint">สีเปลี่ยนเร็วแค่ไหน</string>
|
||||
<string name="theme_gradient">ไล่เฉดสี</string>
|
||||
<string name="theme_gradient_detail">สีหลักและสีรองที่คุณเลือกเอง ผสมกันบนปุ่มและส่วนที่เน้น</string>
|
||||
<string name="theme_gradient_primary">สีหลัก</string>
|
||||
|
||||
@@ -1395,6 +1395,10 @@
|
||||
<string name="theme_icon_blue_detail">Siyah zemin, beyaz yazı; seçilen, odaklanan veya basılan her şey için mavi.</string>
|
||||
<string name="theme_electric">Elektrik laciverti</string>
|
||||
<string name="theme_electric_detail">Daha parlak mavi; gri yerine laciverte çalan yüzeylerde.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Gökkuşağında dolaşan renkler. Android\'in animasyon ayarlarına uyar.</string>
|
||||
<string name="theme_rgb_speed">Hız</string>
|
||||
<string name="theme_rgb_speed_hint">Renklerin ne kadar hızlı değiştiği.</string>
|
||||
<string name="theme_gradient">Geçiş</string>
|
||||
<string name="theme_gradient_detail">Kendi birincil ve ikincil renklerin, düğmelerde ve vurgularda harmanlanır.</string>
|
||||
<string name="theme_gradient_primary">Birincil</string>
|
||||
|
||||
@@ -1429,6 +1429,10 @@
|
||||
<string name="theme_icon_blue_detail">Чорне тло, білий текст і синій для всього вибраного, у фокусі чи натиснутого.</string>
|
||||
<string name="theme_electric">Електричний темно-синій</string>
|
||||
<string name="theme_electric_detail">Яскравіший синій на поверхнях із темно-синім відтінком замість сірого.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Кольори, що плавно змінюються по всій веселці. Враховує налаштування анімації Android.</string>
|
||||
<string name="theme_rgb_speed">Швидкість</string>
|
||||
<string name="theme_rgb_speed_hint">Як швидко змінюються кольори.</string>
|
||||
<string name="theme_gradient">Градієнт</string>
|
||||
<string name="theme_gradient_detail">Ваші основний і додатковий кольори, що плавно переходять на кнопках і виділеннях.</string>
|
||||
<string name="theme_gradient_primary">Основний</string>
|
||||
|
||||
@@ -1387,6 +1387,10 @@
|
||||
<string name="theme_icon_blue_detail">Nền đen, chữ trắng, xanh cho mọi thứ được chọn, lấy nét hoặc nhấn.</string>
|
||||
<string name="theme_electric">Xanh điện navy</string>
|
||||
<string name="theme_electric_detail">Màu xanh sáng hơn, trên các bề mặt nghiêng về navy thay vì xám.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Màu sắc chuyển dần qua cả dải cầu vồng. Tuân theo cài đặt hiệu ứng động của Android.</string>
|
||||
<string name="theme_rgb_speed">Tốc độ</string>
|
||||
<string name="theme_rgb_speed_hint">Màu đổi nhanh đến mức nào.</string>
|
||||
<string name="theme_gradient">Chuyển màu</string>
|
||||
<string name="theme_gradient_detail">Màu chính và màu phụ do bạn chọn, hòa trộn trên các nút và phần nổi bật.</string>
|
||||
<string name="theme_gradient_primary">Chính</string>
|
||||
|
||||
@@ -1465,6 +1465,10 @@
|
||||
<string name="theme_icon_blue_detail">黑色背景、白色文字,选中、聚焦或按下的元素使用蓝色。</string>
|
||||
<string name="theme_electric">电光藏青</string>
|
||||
<string name="theme_electric_detail">更明亮的蓝色,配以偏藏青而非灰色的界面。</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">在彩虹色之间循环变化的颜色。遵循 Android 的动画设置。</string>
|
||||
<string name="theme_rgb_speed">速度</string>
|
||||
<string name="theme_rgb_speed_hint">颜色循环的快慢。</string>
|
||||
<string name="theme_gradient">渐变</string>
|
||||
<string name="theme_gradient_detail">你自己选择的主色和辅色,在按钮和高亮处渐变呈现。</string>
|
||||
<string name="theme_gradient_primary">主色</string>
|
||||
|
||||
@@ -1389,6 +1389,10 @@
|
||||
<string name="theme_icon_blue_detail">黑色背景、白色文字,所有已選取、焦點所在或按下的項目都使用藍色。</string>
|
||||
<string name="theme_electric">電光海軍藍</string>
|
||||
<string name="theme_electric_detail">更明亮的藍色,搭配偏海軍藍而非灰色的介面。</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">在彩虹色之間循環變化的顏色。遵循 Android 的動畫設定。</string>
|
||||
<string name="theme_rgb_speed">速度</string>
|
||||
<string name="theme_rgb_speed_hint">顏色循環的快慢。</string>
|
||||
<string name="theme_gradient">漸層</string>
|
||||
<string name="theme_gradient_detail">你自行選擇的主色與輔色,在按鈕與強調處以漸層呈現。</string>
|
||||
<string name="theme_gradient_primary">主色</string>
|
||||
|
||||
@@ -1389,6 +1389,10 @@
|
||||
<string name="theme_icon_blue_detail">黑色背景、白色文字,選取、聚焦或按下的項目使用藍色。</string>
|
||||
<string name="theme_electric">電光藏青</string>
|
||||
<string name="theme_electric_detail">更亮的藍色,搭配偏藏青而非灰色的介面。</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">在彩虹色之間循環變化的顏色。遵循 Android 的動畫設定。</string>
|
||||
<string name="theme_rgb_speed">速度</string>
|
||||
<string name="theme_rgb_speed_hint">顏色循環的快慢。</string>
|
||||
<string name="theme_gradient">漸層</string>
|
||||
<string name="theme_gradient_detail">你自行選擇的主色與輔色,在按鈕與強調處以漸層呈現。</string>
|
||||
<string name="theme_gradient_primary">主色</string>
|
||||
|
||||
@@ -1458,6 +1458,10 @@
|
||||
<string name="theme_icon_blue_detail">Black ground, white type, the blue for everything selected, focused or pressed.</string>
|
||||
<string name="theme_electric">Electric navy</string>
|
||||
<string name="theme_electric_detail">The blue brighter, on surfaces that lean navy instead of grey.</string>
|
||||
<string name="theme_inner_gamer">Inner Gamer</string>
|
||||
<string name="theme_inner_gamer_detail">Colors that cycle through the rainbow. Follows Android\'s animation settings.</string>
|
||||
<string name="theme_rgb_speed">Speed</string>
|
||||
<string name="theme_rgb_speed_hint">How fast the colors cycle.</string>
|
||||
<string name="theme_gradient">Gradient</string>
|
||||
<string name="theme_gradient_detail">Your own primary and secondary colors, blended on buttons and highlights.</string>
|
||||
<string name="theme_gradient_primary">Primary</string>
|
||||
|
||||
@@ -132,4 +132,40 @@ class ThemeColorsTest {
|
||||
assertTrue(Themes.all.any { it.id == Themes.GRADIENT })
|
||||
assertEquals(Themes.GRAPHITE, Themes.byId("nonsense").id)
|
||||
}
|
||||
|
||||
@Test fun innerGamerSitsJustAboveGradientInTheThemeList() {
|
||||
val ids = Themes.all.map { it.id }
|
||||
assertEquals(ids.indexOf(Themes.GRADIENT) - 1, ids.indexOf(Themes.INNER_GAMER))
|
||||
}
|
||||
|
||||
@Test fun innerGamerButtonTextIsReadableAlongTheGradientAtEveryHue() {
|
||||
var hue = 0f
|
||||
while (hue < 360f) {
|
||||
val p = Themes.innerGamer(hue)
|
||||
assertEquals(Themes.INNER_GAMER, p.id)
|
||||
for (i in 0..100) {
|
||||
val f = i / 100f
|
||||
val blend = Color(
|
||||
p.primary.red + (p.primary2.red - p.primary.red) * f,
|
||||
p.primary.green + (p.primary2.green - p.primary.green) * f,
|
||||
p.primary.blue + (p.primary2.blue - p.primary.blue) * f,
|
||||
)
|
||||
assertTrue("hue $hue at $f", contrast(p.onPrimary, blend) >= 4.49f)
|
||||
}
|
||||
hue += Themes.RGB_HUE_STEP
|
||||
}
|
||||
}
|
||||
|
||||
@Test fun innerGamerFollowsTheHueAndTheSpeedIsSavedAndKeptInRange() {
|
||||
Themes.setRgbHue(120f)
|
||||
assertEquals(Themes.innerGamer(120f).primary, Themes.byId(Themes.INNER_GAMER).primary)
|
||||
Themes.setRgbSpeed(app, 7)
|
||||
assertEquals(7, SessionPrefs.rgbSpeed(app))
|
||||
Themes.setRgbSpeed(app, 99)
|
||||
assertEquals(Themes.RGB_SPEEDS, Themes.rgbSpeed)
|
||||
Themes.setRgbSpeed(app, 0)
|
||||
assertEquals(1, SessionPrefs.rgbSpeed(app))
|
||||
Themes.setRgbSpeed(app, 1)
|
||||
assertTrue(Themes.rgbCycleMillis(1) > Themes.rgbCycleMillis(10))
|
||||
}
|
||||
}
|
||||
@@ -23,3 +23,17 @@ Setup shows Primary and Secondary under the theme when Gradient is chosen, each
|
||||
square. It opens `ColorPickerDialog`: a wheel (hue and saturation, touch), hue / saturation /
|
||||
brightness sliders (they work with a controller) and a hex box, with the old and new colour side by
|
||||
side. OK applies it.
|
||||
|
||||
## Inner Gamer theme
|
||||
|
||||
`Themes.INNER_GAMER` is an RGB theme: the accent walks round the colour wheel. It sits just above
|
||||
Gradient in the list, and Setup shows a Speed slider (1 to 10, `SessionPrefs.rgbSpeed`) under the
|
||||
theme while it is chosen.
|
||||
|
||||
`Themes.innerGamer(hue)` builds the palette for one hue through `ThemeColors.palette`, so button text
|
||||
keeps the same contrast along the gradient at every hue. `DroidDeckTheme` runs one
|
||||
`rememberInfiniteTransition` while Inner Gamer is chosen, so the system's animation clock drives it.
|
||||
The duration goes through `Motion.ms`, so the colour holds still when animations are off in the app
|
||||
or in Android's own settings. The hue is written to `Themes.rgbHue` in 3° steps, which restyles the
|
||||
app only when the colour visibly moves; a slow cycle costs few recompositions.
|
||||
|
||||
Reference in new issue
Block a user