Функция dynamicDarkColorScheme
Функция dynamicDarkColorScheme
берёт Context
и возвращает тёмную
ColorScheme
из dynamic color.
На Android 12+ оттенки связаны с обоями,
иначе используют запасной набор как
darkColorScheme.
Результат передают в
MaterialTheme.
Синтаксис
val scheme = dynamicDarkColorScheme(context)
Параметры
| Параметр | Описание |
|---|---|
context |
Контекст приложения для чтения системных цветов. |
Пример
Давайте включим тёмную dynamic тему для текста:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val context = LocalContext.current
MaterialTheme(
colorScheme = dynamicDarkColorScheme(context),
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.background),
) {
Text(text = "abcde")
}
}
}
}
}
На экране фон станет тёмным из dynamic palette,
текст "abcde" - контрастным из темы.
Пример
Давайте переключим светлую и тёмную dynamic схему по флагу:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val context = LocalContext.current
var dark by remember { mutableStateOf(false) }
val scheme = if (dark) {
dynamicDarkColorScheme(context)
} else {
dynamicLightColorScheme(context)
}
MaterialTheme(colorScheme = scheme) {
Button(onClick = { dark = !dark }) {
Text(text = if (dark) "12345" else "abcde")
}
}
}
}
}
На экране по нажатию на кнопку тема переключится между dynamic light и dynamic dark.
Смотрите также
-
функция
dynamicLightColorScheme,
которая строит светлую схему из обоев -
функция
darkColorScheme,
которая задаёт тёмные цвета вручную -
функция
MaterialTheme,
которая применяет выбранную colorScheme -
класс
ColorScheme,
который хранит primary, surface и другие слоты