Перейти к содержимому

Material Design 3 for Android

Material Design 3 (MD3) представляет собой новейшую дизайн-систему Google, которая вводит революционный подход к персонализации интерфейсов через динамический цвет, обновлённую типографику и усовершенствованную систему компонентов. Этот гайд содержит точные числовые спецификации для оценки дизайн-макетов на соответствие официальным стандартам MD3.


MD3 использует 5-ключевую цветовую систему на основе цветового пространства HCT (Hue, Chroma, Tone), обеспечивающего перцептуально точные расчёты контрастности.

Ключевые цвета и их роли:

Ключевой цветНазначение
PrimaryОсновные компоненты: кнопки, активные состояния, FAB
SecondaryМенее заметные компоненты: filter chips, расширенное цветовое выражение
TertiaryКонтрастные акценты для баланса primary/secondary
NeutralФоны и поверхности
Neutral VariantВарианты поверхностей, обводки

Тональные палитры: Каждый ключевой цвет генерирует 13 тонов: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100, где Tone 0 = чёрный, Tone 100 = белый.

Маппинг тонов по темам:

РольСветлая темаТёмная тема
PrimaryTone 40Tone 80
On PrimaryTone 100Tone 20
Primary ContainerTone 90Tone 30
SurfaceTone 99Tone 6
Surface ContainerTone 94Tone 12

Базовые цвета светлой темы (HEX):

ТокенЗначениеНазначение
primary#6750A4Основной акцент
onPrimary#FFFFFFТекст на primary
primaryContainer#CBC0E6Фон prominent-элементов
secondary#625B71Вторичный акцент
tertiary#7D5260Третичный акцент
error#B3261EОшибки
surface#FFFBFEОсновная поверхность
onSurface#1C1B1FТекст на surface
outline#79747EГраницы
outlineVariant#CAC4D0Разделители

Dynamic Color (Android 12+) — извлекает цвета из обоев устройства или in-app контента, обеспечивая персонализированные темы.


MD3 использует 15 типографических стилей с базовым шрифтом Roboto.

СтильРазмер (sp)Line Height (sp)WeightLetter Spacing
displayLarge5764400 (Regular)-0.25
displayMedium45524000
displaySmall36444000
headlineLarge32404000
headlineMedium28364000
headlineSmall24324000
titleLarge2228500 (Medium)0
titleMedium16245000.15
titleSmall14205000.1
bodyLarge16244000.5
bodyMedium14204000.25
bodySmall12164000.4
labelLarge14205000.1
labelMedium12165000.5
labelSmall11165000.5

Типографика выравнивается по baseline grid 4dp.


Window Size Classes (Брейкпоинты):

КлассДиапазон шириныТипичные устройства
Compact< 600dp99.96% телефонов (portrait)
Medium600–839dp93.73% планшетов (portrait), foldables
Expanded840–1199dp97.22% планшетов (landscape)
Large1200–1599dpБольшие планшеты
Extra-Large≥ 1600dpDesktop-дисплеи

Система сетки:

БрейкпоинтКолонкиОтступы (Gutters)Поля (Margins)
360dp (Compact)416dp16dp
600dp (Medium)824dp24–32dp
840dp+ (Expanded)1224dp32dp

Базовая единица сетки: 8dp — все измерения кратны этому значению.

Spacing Scale:

ТокенЗначение
space-xs4dp
space-sm8dp
space-md16dp
space-lg24dp
space-xl32dp
space-xxl48dp

Shape Scale (Радиусы скругления):

ТокенCorner RadiusПрименение
None0dpОстрые углы
Extra Small4dpBadges, checkboxes, text fields
Small8dpChips, small cards
Medium12dpCards, dialogs, menus
Large16dpFABs, navigation drawers
Large Increased20dpExpanded FABs
Extra Large28dpBottom sheets, large cards
Full50% (pill)Кнопки, pills

MD3 использует тональную элевацию вместо традиционных теней — наложение Surface Tint на основе Primary color.

Уровни элевации:

УровеньЗначениеOpacity тинтаКомпоненты
Level 00dp0%Flat surfaces, filled buttons
Level 11dp5%Elevated cards, bottom sheets
Level 23dp8%Navigation bar, menus
Level 36dp11%FABs, dialogs, snackbars
Level 48dp12%Navigation drawer
Level 512dp14%Modal bottom sheets

Easing Curves:

ТипCubic-BezierПрименение
Standard(0.4, 0, 0.2, 1)Большинство переходов
Decelerate(0.0, 0, 0.2, 1)Элементы входят на экран
Accelerate(0.4, 0, 1, 1)Элементы покидают экран
Sharp(0.4, 0, 0.6, 1)Элементы, которые могут вернуться

Duration Tokens:

КатегорияДлительностьПрименение
Short 1-450–200msMicro-interactions, ripples
Medium 1-4250–400msСтандартные переходы UI
Long 1-4450–600msPage transitions, complex animations

Рекомендуемая длительность по умолчанию: 300ms. Мобильные анимации: 300–400ms для крупных элементов.


Размеры иконок:

РазмерПрименениеTouch Target
20dpDense desktop layouts40dp
24dpСтандартный (по умолчанию)48dp
36dpLarge displayN/A
48dpExtra large displayN/A

Параметры Material Symbols (Variable Font):

ОсьДиапазонПо умолчанию
Weight100–700400
Fill0–10 (outlined)
Grade-25 to 2000
Optical Size20–4824

Стандартная ширина обводки иконок: 2dp.


Когда использовать:

  • Filled: Наивысший приоритет — Save, Confirm, Join
  • Filled Tonal: Средний приоритет — Next в onboarding
  • Outlined: Важные, но не первичные действия
  • Elevated: Визуальное отделение от паттерн-фонов
  • Text: Самый низкий приоритет, множественные опции

Анатомия: Container → Label text → Icon (optional) → State layer

Размеры:

СвойствоЗначение
Высота40dp
Мин. ширина64dp (рекомендуемая 88dp)
Corner radius20dp (pill shape)
Horizontal padding24dp (только текст), 16dp (с иконкой)
Icon size18dp
Icon-to-label spacing8dp
Touch target≥48dp
Outline width1dp

States:

СостояниеState Layer Opacity
Enabled0%
DisabledContent 38%, container 12%
Hovered8%
Focused12%
Pressed12%

Color Tokens:

Тип кнопкиContainerLabel/Icon
FilledprimaryonPrimary
Filled TonalsecondaryContaineronSecondaryContainer
ElevatedsurfaceContainerLowprimary
OutlinedTransparentprimary
TextTransparentprimary

Typography: labelLarge (14sp, Medium 500)

✅ Do’s: Чёткие action-oriented labels; выбор типа по иерархии важности ❌ Don’ts: Несколько filled кнопок на одном уровне; обрезка текста labels


Когда использовать: Наиболее важное действие на экране — Create, Compose, Add. Только один FAB на экран.

Размеры:

ВариантРазмерIconCorner RadiusElevation
Small FAB40×40dp24dp12dp3dp
FAB (default)56×56dp24dp16dp3dp
Large FAB96×96dp36dp28dp3dp
Extended FAB56dp height24dp16dp3dp

Extended FAB: min width 80dp, horizontal padding 16dp, icon-to-label spacing 12dp.

Color Tokens: Container: primaryContainer, Icon: onPrimaryContainer

✅ Do’s: Конструктивные действия; позиция bottom-right (LTR) ❌ Don’ts: Деструктивные действия (delete); множественные FAB


Размеры:

СвойствоЗначение
Container40×40dp
Icon24dp
Touch target48×48dp
ShapeCircle (full)

Типы: Standard (no background), Filled, Filled Tonal, Outlined


Для 2–5 опций — single-select или multi-select.

СвойствоЗначение
Высота40dp
Min segment width48dp
Segment padding12dp
Icon size18dp
Corner radius (container)20dp (pill)
Outline width1dp

ТипРазмерCorner Radius
Small (dot)6×6dp3dp (circle)
Large (1 digit)16×16dp8dp
Large (2+ digits)16dp height × variable8dp

Позиция: offset -4dp от top-right anchor-элемента. Horizontal padding (large): 4dp.

Color: Container: error, Text: onError

✅ Do’s: Truncate большие числа (99+); скрывать при count=0


КомпонентСвойствоЗначение
CircularDefault size48dp
Track thickness4dp
LinearTrack height4dp
Corner radius2dp (rounded ends)

Color: Active indicator: primary, Track: surfaceContainerHighest

Типы: Determinate (известный прогресс), Indeterminate (неизвестная длительность)


СвойствоЗначение
Min height (single-line)48dp
Max height (two-line)68dp
Min width344dp
Max width672dp
Corner radius4dp
Horizontal padding16dp
Elevation6dp
Bottom margin8dp от edge

Timing: Short: 4s, Long: 10s, Indefinite: до dismiss

Color: Container: inverseSurface, Text: inverseOnSurface

✅ Do’s: Краткие сообщения; позиция выше FAB ❌ Don’ts: Не использовать для критичных ошибок (используйте dialog)


ТипMax WidthMin HeightPaddingCorner Radius
Plain200dp24dp8dp H, 4dp V4dp
Rich320dpVariable16dp H, 12dp V12dp

Timing: Entrance 150ms, Display 1500ms, Exit 75ms, Hover delay (desktop) 500ms


Анатомия: Container → Drag handle (32×4dp) → Header → Content → Scrim (modal)

СвойствоЗначение
Screen edge margins16dp (left/right)
List-item height48dp
List title height56dp
Grid margin24dp
Divider1dp

Color: Container: surfaceContainerLow


Типы: Elevated, Filled, Outlined

СвойствоElevatedFilledOutlined
Corner radius12dp12dp12dp
Elevation (resting)Level 1 (1dp)Level 0Level 0
Elevation (dragged)Level 4 (8dp)Level 3 (6dp)Level 3 (6dp)
Stroke width1dp

Recommended margin: 8dp (mobile), Bottom padding: 16dp (с actions), 24dp (без)


СвойствоЗначение
Max width560dp
Padding content24dp
Padding title-body20dp
Button area height52dp
Button padding8dp
ElevationLevel 3
Corner radius28dp (extra-large)

Typography: Headline: headlineSmall (24sp), Body: bodyMedium (16sp)


Thickness: 1dp, Color: outlineVariant

Типы: Full-bleed, Inset (padding 16dp), Middle


КонфигурацияВысота
Single-line56dp
Single-line (dense)48dp
Two-line72dp
Two-line (dense)60dp
Three-line88dp

Padding: Left/right 16dp, Top/bottom list 8dp

Avatar size: 40dp, Icon size: 24dp


Для 3–5 destinations на мобильных устройствах.

СвойствоЗначение
Высота80dp
Icon size24×24dp
Active indicator64×32dp (pill)
Label typography12sp
Item widthEqual distribution (min 80dp, max 168dp)
ElevationLevel 2

Color: Active indicator: secondaryContainer, Active icon: onSecondaryContainer


Для mid-sized устройств (tablets, landscape phones). 3–7 destinations + FAB.

СвойствоЗначение
Width80dp (collapsed)
Icon size24dp
Active indicator56×32dp (pill)
Item vertical spacing12dp

СвойствоЗначение
Width360dp
Item height56dp
Icon size24dp
Horizontal padding28dp (start), 24dp (end)
Active indicator corner radius28dp (full)

ВариантВысота (collapsed)Высота (expanded)
Small/Center-aligned64dp
Medium64dp112dp
Large64dp152dp

Icon size: 24dp, Edge padding: 16dp

Typography:

  • Small: titleLarge (22sp)
  • Medium: headlineSmall (24sp)
  • Large: headlineMedium (28sp)

СвойствоЗначение
Высота (icons/text only)48dp
Высота (icons + text)64dp
Min tab width72dp (small), 160dp (large)
Max tab width264dp
Indicator height (Primary)3dp
Indicator height (Secondary)2dp

СвойствоЗначение
Высота56dp
Corner radius28dp (pill)
Icon size24dp
Horizontal padding16dp
Elevation6dp

СвойствоЗначение
Checkbox size18×18dp
Touch target≥48×48dp
Stroke width2dp

States: Unselected, Selected (checkmark), Indeterminate (dash), Disabled, Error


Типы: Assist, Filter, Input, Suggestion

СвойствоЗначение
Высота32dp
Corner radius8dp
Horizontal padding16dp (label only), 8dp (с icons)
Icon size18dp
Avatar size24dp
Chip spacing8dp

СвойствоЗначение
Radio button size20dp diameter
Inner dot (selected)10dp diameter
Touch target≥48×48dp
Stroke width2dp

СвойствоЗначение
Track height4dp
Thumb diameter (default)20dp
Thumb diameter (pressed)28dp
Value label size28×28dp
Touch target height48dp
Tick mark size4dp

СвойствоЗначение
Track width52dp
Track height32dp
Track corner radius16dp (full)
Handle (off)16dp
Handle (on)24dp
Handle (pressed)28dp
Icon size16dp
Touch target height≥48dp

Modal (Portrait): Width 360dp, Height 568dp, Header 120dp, Corner radius 28dp

Modal (Landscape): Width 568dp, Height 360dp


Modal Dial: Width 328dp, Height 456dp, Clock face diameter 256dp, Corner radius 28dp


СвойствоFilledOutlined
Высота56dp56dp
Dense height48dp
Corner radius4dp (top only)4dp (all)
Indicator/Outline (idle)1dp1dp
Indicator/Outline (focused)2dp2dp
Horizontal padding16dp16dp

Typography:

  • Label: bodyLarge (16sp) → bodySmall (12sp) при float
  • Input text: bodyLarge (16sp)
  • Supporting text: bodySmall (12sp)

✅ Do’s: Всегда используйте labels; показывайте error states с иконками ❌ Don’ts: Не смешивайте filled и outlined в одной секции


Reference Tokens (сырые значения: md-ref-primary-primary40)
System Tokens (семантические: md-sys-color-primary)
Component Tokens (специфичные: button-filled-container-color)
Custom Overrides

Платформы: Web (m3.material.io/theme-builder), Figma Plugin

Экспорт: Jetpack Compose, Android XML, Web CSS, Flutter, DSP

Возможности: Генерация из source color/image, light/dark темы, Medium/High contrast варианты

ТокенНазначение
surfaceОсновной фон
surfaceDimТёмная вариация surface
surfaceBrightСветлая вариация
surfaceContainerLowestСамая низкая elevation
surfaceContainerLowНизкая elevation
surfaceContainerDefault container
surfaceContainerHighВысокая elevation
surfaceContainerHighestСамая высокая elevation

СпецификацияЗначение
Минимальный touch target48×48dp
Физический размер~9mm
Минимальный spacing между targets8dp
Тип текстаМинимум (AA)Улучшенный (AAA)
Normal text (<18pt)4.5:17:1
Large text (≥18pt или 14pt bold)3:14.5:1
UI Components, icons3:1
СостояниеOpacity
Hover8%
Focus12%
Pressed12%
Dragged16%
  • Автовоспроизведение контента должно останавливаться после 5 секунд
  • Limit flashing до 3 раз в секунду максимум
  • Поддержка prefers-reduced-motion: reduce

ШиринаЗначениеПокрытие устройств
Compact< 600dp99.96% телефонов (portrait)
Medium600–839dp93.73% планшетов (portrait)
Expanded840–1199dp97.22% планшетов (landscape)
Large1200–1599dpБольшие планшеты
Extra-Large≥ 1600dpDesktop
КомпонентВысота
Status bar24dp
Gesture navigation bar24dp
3-button navigation bar48dp

Android 15+ (API 35): Edge-to-edge применяется автоматически.

Ключевые принципы:

  • Top app bar растягивается до верха экрана за status bar
  • Bottom navigation растягивается до низа за navigation bar
  • Скроллируемый контент появляется за navigation bar
  • Используйте clipToPadding="false" на scrollable containers
ТипНазначение
systemBars()Status bar + navigation bar
displayCutout()Области камеры/notch
systemGestures()Back gesture + home gesture areas
ime()On-screen keyboard
safeDrawingБезопасная область для отрисовки
safeGesturesБезопасная область от конфликтов с жестами

Gesture inset areas:

  • Back gesture: ~20–24dp от левого и правого края
  • Home gesture: Нижняя inset область

Рекомендации: Избегайте touch targets в gesture inset areas; используйте setSystemGestureExclusionRects() только для критичных drag handles.


КритерийТребование MD3
Touch targets≥48×48dp, spacing ≥8dp
Text contrast≥4.5:1 (normal), ≥3:1 (large)
Baseline gridКратно 8dp (4dp для мелких элементов)
Button height40dp
FAB size56×56dp (standard)
Navigation bar height80dp
Top app bar height64dp
List item height56dp (single), 72dp (two-line)
Card corner radius12dp
Dialog corner radius28dp
Chip height32dp
Text field height56dp
Compact margin16dp

Источники: Официальная документация Material Design 3 (m3.material.io), Android Developers (developer.android.com)