Функция dynamicLightColorScheme
Функция dynamicLightColorScheme
принимает Context
и возвращает светлую
ColorScheme
на основе dynamic color устройства.
На Android 12 и выше оттенки берут из обоев,
на более старых версиях подставляют fallback
как у
lightColorScheme.
Схему передают в
MaterialTheme,
сама функция экран не рисует.
Синтаксис
val scheme = dynamicLightColorScheme(context)
Параметры
| Параметр | Описание |
|---|---|
context |
Контекст активности или приложения. Через него читают системные dynamic colors. |
Пример
Давайте применим dynamic light scheme к тексту:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.ui.platform.LocalContext
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val context = LocalContext.current
val scheme = dynamicLightColorScheme(context)
MaterialTheme(colorScheme = scheme) {
Text(text = "abcde")
}
}
}
}
На экране текст "abcde" получит цвета
из светлой палитры устройства, если система их отдаёт.
Пример
Давайте покрасим фон surface из dynamic scheme:
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.dynamicLightColorScheme
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 = dynamicLightColorScheme(context),
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colorScheme.surface),
) {
Text(
text = "12345",
color = MaterialTheme.colorScheme.primary,
)
}
}
}
}
}
На экране фон и primary подстроятся под светлую dynamic palette Android.
Смотрите также
-
функция
dynamicDarkColorScheme,
которая строит тёмную схему из обоев -
функция
lightColorScheme,
которая задаёт светлые цвета вручную -
функция
MaterialTheme,
которая раздаёт colorScheme дочерним элементам -
класс
ColorScheme,
который возвращает dynamicLightColorScheme