Material3

MaterialTheme

Cистема тем, которая позволяет создавать UI в соответствии с Material Design. Она предоставляет единый источник стилистических параметров, таких как цвета, типографику и формы, делая интерфейс согласованным и легко настраиваемым.

MaterialTheme(
    colorScheme = dynamicLightColorScheme(),
    typography = Typography(),
    shapes = Shapes()
) {
    // Контент приложения с использованием Material 3
    Text(
        text = "Hello, Material 3!",
        style = MaterialTheme.typography.headlineMedium,
        color = MaterialTheme.colorScheme.primary
    )
}
colorScheme

Отвечает за управление цветовой палитрой приложения, обеспечивая гибкость и согласованность стиля. Вместо традиционной палитры (с primary, secondary и т.д.) в colorScheme используется более детализированный набор цветов, поддерживающий динамическую тему и новые возможности кастомизации.

lightColorScheme

Создает цветовую палитру для светлой темы в Jetpack Compose.

val lightColors = lightColorScheme(
    primary = Color(0xFF6200EE),
    onPrimary = Color.White,
    primaryContainer = Color(0xFFBB86FC),
    onPrimaryContainer = Color.Black,
    secondary = Color(0xFF03DAC6),
    onSecondary = Color.Black,
    background = Color(0xFFF5F5F5),
    onBackground = Color.Black,
    surface = Color.White,
    onSurface = Color.Black,
    error = Color(0xFFB00020),
    onError = Color.White
)

MaterialTheme(
    colorScheme = lightColors
) {
    // Контент приложения
}

• primary основной цвет интерфейса для акцентных элементов.

• onPrimary цвет текста или иконок на фоне primary.

• primaryContainer вариант основного цвета для контейнеров.

• onPrimaryContainer цвет текста или иконок на фоне primaryContainer.

• inversePrimary противоположный primary цвет для контраста на тёмных фонах.

• secondary дополнительный цвет для менее акцентных элементов.

• onSecondary цвет текста или иконок на фоне secondary.

• secondaryContainer вариант дополнительного цвета для контейнеров.

• onSecondaryContainer цвет текста или иконок на фоне secondaryContainer.

• tertiary третичный цвет для нестандартных акцентов.

• onTertiary цвет текста или иконок на фоне tertiary.

• tertiaryContainer вариант третичного цвета для контейнеров.

• onTertiaryContainer цвет текста или иконок на фоне tertiaryContainer.

• background основной цвет фона приложения.

• onBackground цвет текста или элементов на фоне background.

• surface цвет поверхностного фона для карточек и меню.

• onSurface цвет текста или элементов на фоне surface.

• surfaceVariant изменённый цвет surface для выделения.

• onSurfaceVariant цвет текста или элементов на фоне surfaceVariant.

• surfaceTint оттенок для поверхностей с визуальными эффектами.

• inverseSurface цвет для обратных поверхностей (тёмные на светлом фоне).

• inverseOnSurface цвет текста или элементов на фоне inverseSurface.

• error цвет для обозначения ошибок.

• onError цвет текста или иконок на фоне error.

• errorContainer цвет контейнера для сообщений об ошибках.

• onErrorContainer цвет текста или иконок на фоне errorContainer.

• outline цвет для рамок и разделителей.

• outlineVariant альтернативный цвет для outline.

• scrim полупрозрачный цвет для затенения заднего плана.

• surfaceBright более яркий вариант surface.

• surfaceContainer основной цвет контейнеров, близкий к surface.

• surfaceContainerHigh более светлый вариант surfaceContainer.

• surfaceContainerHighest максимально светлый вариант surfaceContainer.

• surfaceContainerLow более тёмный вариант surfaceContainer.

• surfaceContainerLowest самый тёмный вариант surfaceContainer.

• surfaceDim затемнённый вариант surface для приглушённых элементов.

darkColorScheme

Создает цветовую палитру для тёмной темы в Jetpack Compose.

val darkColors = darkColorScheme(
    primary = Color(0xFFBB86FC),
    onPrimary = Color.Black,
    primaryContainer = Color(0xFF3700B3),
    onPrimaryContainer = Color.White,
    secondary = Color(0xFF03DAC6),
    onSecondary = Color.Black,
    background = Color(0xFF121212),
    onBackground = Color.White,
    surface = Color(0xFF1F1F1F),
    onSurface = Color.White,
    error = Color(0xFFCF6679),
    onError = Color.Black
)

MaterialTheme(
    colorScheme = darkColors
) {
    // Контент приложения
}
dynamicLightColorScheme

Создает динамическую цветовую палитру для светлой темы на основе цветов обоев пользователя. Доступна на устройствах с Android 12 (API 31) и выше и использует API Material You.

@Composable
fun MyApp() {
    val context = LocalContext.current
    val dynamicLightColors = if (Build.VERSION.SDK_INT >= 31) {
        dynamicLightColorScheme(context)
    } else {
        lightColorScheme() // Стандартная палитра для устройств ниже Android 12
    }

    MaterialTheme(
        colorScheme = dynamicLightColors
    ) {
        // Контент приложения
    }
}
dynamicDarkColorScheme

Cоздает динамическую цветовую палитру для тёмной темы на основе цветов обоев пользователя. Доступна на устройствах с Android 12 (API 31) и выше использует API Material You.

@Composable
fun MyApp() {
    val context = LocalContext.current
    val dynamicDarkColors = if (Build.VERSION.SDK_INT >= 31) {
        dynamicDarkColorScheme(context)
    } else {
        darkColorScheme() // Стандартная палитра для устройств ниже Android 12
    }

    MaterialTheme(
        colorScheme = dynamicDarkColors
    ) {
        // Контент приложения
    }
}
shapes

Отвечает за настройку формы и скругления углов компонентов в приложении, что позволяет создать уникальный и согласованный стиль интерфейса.

typography

Задаёт стили текстов в приложении, включая размер, начертание, межстрочный интервал и другие параметры для различных текстовых элементов, таких как заголовки, подзаголовки и основной текст.