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

Android Design Guide

Официальный гайд по дизайну Android-приложений на основе документации developer.android.com/design. Для использования AI при оценке дизайн-макетов на соответствие Android guidelines.


  1. Foundations (Основы)
  2. Styles (Стили)
  3. Layout & Content (Макет и контент)
  4. Components (Компоненты)
  5. Patterns (Паттерны)
  6. Home Screen (Домашний экран)
  7. Widgets (Виджеты)
  8. App Icons (Иконки приложения)
  9. Quality Guidelines (Требования качества)
  10. Краткая шпаргалка

Системные панели — status bar, caption bar и navigation bar — отображают важную информацию (уровень батареи, время, уведомления) и обеспечивают взаимодействие с устройством.

  • Расположение: Верх экрана
  • Содержимое: Notification icons слева, system icons справа (время, батарея, сигнал)
  • Взаимодействие: Свайп вниз открывает notification shade
  • Стиль: Прозрачная или полупрозрачная

Требования к стилю:

  • Делать status bar прозрачной для edge-to-edge контента
  • Android 15+: edge-to-edge обязателен по умолчанию
  • Использовать enableEdgeToEdge() для обратной совместимости
  • Иконки автоматически адаптируют цвет в зависимости от фона (dynamic color adaptation)
  • Типы: Gesture navigation (жесты) или 3-button navigation (кнопки)
  • Gesture navigation: Один gesture handle внизу экрана
  • 3-button navigation: Back, Home, Overview кнопки

Gesture Navigation:

  • Свайп от левого/правого края → Back
  • Свайп снизу вверх → Home
  • Свайп снизу вверх + удержание → Overview
  • Handle автоматически меняет цвет (dynamic color adaptation)

Требования:

  • Navigation bar должна быть прозрачной для gesture navigation
  • Для 3-button: можно использовать translucent scrim
  • Window.setNavigationBarContrastEnforced(false) для прозрачности
  • Избегать размещения touch targets под gesture insets
  • Учитывать область камеры/датчиков
  • Использовать displayCutout insets для безопасных зон
  • Контент не должен обрезаться вырезами

Android требует соблюдения accessibility стандартов для ~15% мирового населения с ограниченными возможностями.

Типографика:

  • Размер шрифта в scalable pixels (sp)
  • Минимальный body text: 12 sp
  • Соответствует Material typescale по умолчанию

Цветовой контраст (WCAG):

ЭлементМинимальный контраст
Текст <18pt (или bold <14pt)4.5:1
Крупный текст3:1
Non-text элементы (иконки, границы)3:1

Визуальные affordances:

  • Не полагаться только на цвет для индикации действий
  • Использовать дополнительные индикаторы: font weight, underline, icons
  • Декоративные элементы помечать как decorative (null description)
  • Все UI элементы должны иметь текстовые описания
  • Использовать Semantics properties в Compose
  • Иконки и изображения требуют contentDescription
  • Группировать связанные UI элементы
  • Минимальный touch target: 48×48 dp
  • Touch target может выходить за визуальные границы элемента
  • Не полагаться только на жесты — создавать альтернативные действия
  • Использовать haptic feedback

Android использует Material 3 color system с поддержкой Dynamic Color (Android 12+).

Цветовая схема строится на 5 ключевых цветах:

  1. Primary — основной акцент
  2. Secondary — второстепенный акцент
  3. Tertiary — дополнительный акцент
  4. Neutral — фоны и поверхности
  5. Neutral Variant — контуры и средние акценты

Каждый ключевой цвет генерирует палитру из 13 тонов:

  • 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100

Маппинг тонов для светлой темы:

РольТон
Primary40
On Primary100
Primary Container90
On Primary Container10
Surface99
On Surface10

Маппинг тонов для тёмной темы:

РольТон
Primary80
On Primary20
Primary Container30
On Primary Container90
Surface10
On Surface90

Surfaces занимают большую часть UI:

  • surface — базовый фон
  • surfaceDim — затемнённый фон
  • surfaceBright — осветлённый фон
  • surfaceContainerLowest — самый светлый контейнер
  • surfaceContainerLow — светлый контейнер
  • surfaceContainer — средний контейнер
  • surfaceContainerHigh — тёмный контейнер
  • surfaceContainerHighest — самый тёмный контейнер
  • Цвета генерируются из обоев пользователя
  • Использовать Material Theme Builder для превью
  • Обязательно создавать fallback custom theme
  • Проверять контраст красный/зелёный (color blindness)
  • Придерживаться ограниченной палитры
  • Повторять установленные цветовые паттерны
  • Создавать light и dark color schemes
  • Hex format: 6-digit RGB, 8-digit с opacity (AARRGGBB)
  1. System themes — влияют на весь UI устройства (light/dark/contrast)
  2. App themes — применяются только внутри приложения
  • Использует purple color scheme
  • Шрифт Roboto
  • Применяется если не определены custom theme attributes
  • Для полной кастомизации look and feel
  • Как fallback когда dynamic color недоступен
  • Можно создавать множественные схемы для выбора пользователем
  • UI наследует цвета от контента (album art, movie posters)
  • Для фокусировки внимания на конкретном контенте
  • Reference tokens → System tokens → Component tokens
  • Использовать tokens вместо hard-coded hex values
  • Tokens обеспечивают консистентность и масштабируемость

  • Учитывать разные aspect ratios, size classes, resolutions
  • Проверять landscape и portrait ориентации
  • Honor device safe areas (cutouts, insets, keyboards, system bars)
  • Держать essential interactions в reachable screen area

Экран состоит из:

  1. System Bars (status + navigation)
  2. App Bar (top/bottom)
  3. Navigation (bar/rail/drawer)
  4. Body Region (основной контент)

Body region должен продолжаться под system bars (edge-to-edge).

  • dp (density-independent pixels) — для layout и spacing
  • sp (scalable pixels) — для текста
  • Базовая единица: 8 dp (кратность)
  • Мелкая единица: 4 dp (для иконок и мелких элементов)

Количество колонок по Window Size Class:

Size ClassWidthColumnsMarginsGutters
Compact<600 dp416 dp16 dp
Medium600-839 dp824 dp24 dp
Expanded840+ dp1224 dp24 dp

Правила:

  • Контент размещается в колонках
  • Margins защищают контент от краёв экрана
  • Gutters — пространство между колонками
  • Избегать слишком гранулярной сетки
ClassWidthТипичные устройства
Compact<600 dp99.96% телефонов в portrait
Medium600-839 dp93.73% планшетов в portrait
Expanded840+ dp97.22% планшетов в landscape

Распространённые соотношения сторон:

  • 16:9 — широкоформатное видео
  • 3:2 — фотографии
  • 4:3 — традиционное
  • 1:1 — квадратное (аватары, thumbnails)
  • Compact: 16 dp минимум
  • Margins адаптируются для larger screens
  • Обеспечивают inset safe zones

Два типа группировки контента:

  1. Implicit — через white space
  2. Explicit — через dividers, cards, outlines
  • Использовать consistent spacing между like elements
  • Spacing scale: 4, 8, 12, 16, 24, 32, 48 dp
  1. System bar insets — для tappable UI, не должен перекрываться system bars
  2. System gesture insets — области жестов ОС (приоритет над приложением)
  3. Display cutout insets — области камеры/датчиков
  • Top app bar коллапсируется при скролле
  • При sticky app bar: коллапс до высоты status bar
  • При non-sticky: добавить matching background gradient
  • Translucent status bar когда UI скроллится под ней
  • Bottom app bar коллапсируется при скролле
  • Gesture navigation: всегда прозрачная, без дополнительного scrim
  • 3-button navigation: можно добавить translucent scrim
  • Для adaptive layouts: отдельные градиенты для panes с разным фоном
  • Navigation drawer требует отдельный gradient от основного контента
  • Не накладывать несколько status bar protections
  • Для messaging apps, contact managers, file browsers
  • Compact: только list или detail view
  • Expanded: list и detail рядом
  • Для новостей, social media, galleries
  • List-based или grid-based
  • Динамический контент из API
  • Основной контент + дополнительная панель
  • Productivity apps, document viewers
  • Rows и columns
  • Может быть rigid или staggered
  • Consistent spacing и logic
  • Reveal — показывать больше контента на larger screens
  • Transform — менять компоненты (nav bar → nav rail)
  • Divide — разделять на panes
  • Reflow — перестраивать grid
  • Используются Window Size Classes как breakpoints
  • Не каждое приложение должно быть на каждом размере экрана
  • Дизайнить key screens для основных size classes

Android рекомендует использовать Material Design 3 компоненты для консистентного UX.

Actions:

  • Buttons (Filled, Tonal, Elevated, Outlined, Text)
  • FAB (Floating Action Button)
  • Extended FAB
  • Icon Buttons
  • Segmented Buttons

Communication:

  • Badges
  • Progress Indicators (Circular, Linear)
  • Snackbars
  • Tooltips

Containment:

  • Bottom Sheets
  • Cards (Elevated, Filled, Outlined)
  • Dialogs
  • Dividers
  • Lists

Navigation:

  • Navigation Bar
  • Navigation Rail
  • Navigation Drawer
  • Top App Bar
  • Tabs
  • Search

Selection:

  • Checkbox
  • Chips
  • Radio Buttons
  • Sliders
  • Switches
  • Date/Time Pickers

Text Inputs:

  • Text Fields (Filled, Outlined)
ТипВысотаMin WidthCorner RadiusUse Case
Filled40 dp64 dp20 dp (full)Primary actions
Tonal40 dp64 dp20 dpSecondary actions
Elevated40 dp64 dp20 dpNeeds lift from surface
Outlined40 dp64 dp20 dpAlternative actions
Text40 dp48 dp20 dpLow emphasis

Padding: 24 dp horizontal

РазмерDimensionsIcon SizeCorner Radius
Small40×40 dp24 dp12 dp
Standard56×56 dp24 dp16 dp
Large96×96 dp36 dp28 dp

Extended FAB: Min width 80 dp, height 56 dp

  • Высота: 80 dp
  • Icon size: 24 dp
  • Active indicator: 64×32 dp pill
  • Destinations: 3-5
  • Label: Always visible
  • Ширина: 80 dp
  • Icon size: 24 dp
  • Active indicator: 56×32 dp pill
  • Destinations: 3-7
  • Для Medium и Expanded window sizes
ТипВысота (collapsed)Высота (expanded)
Small64 dp
Medium64 dp112 dp
Large64 dp152 dp
  • Corner radius: 12 dp
  • Elevation: Level 0 (Filled), Level 1 (Elevated)
  • Padding: 16 dp
ТипВысота
Single-line56 dp
Two-line72 dp
Three-line88 dp

Padding: 16 dp horizontal

  • Max width: 560 dp
  • Padding: 24 dp
  • Corner radius: 28 dp
  • Elevation: Level 3
  • Высота: 56 dp (48 dp dense)
  • Corner radius: 4 dp (top corners для Filled)
  • Padding: 16 dp
  • Label transition: bodyLarge (16 sp) → bodySmall (12 sp)
  • Indicator: 1 dp (unfocused), 2 dp (focused)
  • Высота: 32 dp
  • Corner radius: 8 dp
  • Padding: 16 dp horizontal
  • Icon size: 18 dp
  • Spacing между chips: 8 dp
  • Track size: 52×32 dp
  • Handle: 16 dp (off), 24 dp (on/pressed)
  • Corner radius: 16 dp full (track)

Predictive back позволяет пользователям предварительно видеть результат back gesture перед его завершением.

  • User starts back gesture → Preview destination
  • User commits (lifts finger) → Navigate back
  • User cancels (returns finger) → Stay in current view
  1. Back-to-home — превью домашнего экрана
  2. Cross-activity — переход между activities
  3. Cross-task — переход между tasks

Full-screen surfaces:

  • Inner area scales down по мере gesture progress
  • При commit threshold: fade through к next state
  • Interpolator обеспечивает быстрый exit

Surface specifications:

  • Margins: 5% ширины с каждой стороны
  • Scale: От 100% до 90%
  • Corner radius: Увеличивается при scale down

Shared element transitions:

  • Surface полностью отделяется от края экрана
  • User может напрямую манипулировать элементом
  • Не показывать что элемент dismiss в направлении gesture
  • Избегать touch targets полностью под gesture areas
  • System gesture insets имеют приоритет над приложением
  • ~20-24 dp от краёв экрана для back gesture
  1. Navigation Bar — 3-5 destinations, bottom of screen
  2. Navigation Rail — для larger screens, side of screen
  3. Navigation Drawer — >5 destinations, более complex hierarchy
  • Tabs — группировка sibling content
  • Bottom App Bar — secondary actions
  • Back возвращает к previous view
  • Home переходит на home screen устройства
  • Up возвращает к parent в app hierarchy
  • Организовать settings в логические группы
  • Использовать consistent visual hierarchy
  • Preference library обеспечивает Material theme
  • Switches для on/off settings
  • Radio buttons для single selection
  • Checkboxes для multiple selection
  • Sliders для ranges
  • Интегрировать help в контекст использования
  • Inline tips и contextual help
  • Feedback mechanisms доступны из settings

Notifications позволяют отображать информацию вне основного UI приложения.

  1. Status bar — icon notification
  2. Notification drawer — expanded view
  3. Lock screen — requires double-tap + unlock
  4. Badge — на app icon
  5. Paired Wear OS — автоматически синхронизируется
КомпонентОписаниеОбязательность
Small icon24×24 dp monochromeRequired
App nameПредоставляется системойAuto
Time stampМожно скрыть/overrideAuto
Large iconContact photos, не для app iconOptional
TitlesetContentTitle()Optional
TextsetContentText()Optional

Basic:

  • Small icon, title, text
  • Expandable для большего контента

Big Text:

  • Для длинных текстовых сообщений
  • Показывает больше текста при expand

Big Picture:

  • Large image attachment
  • Ideal для photos, screenshots

Media:

  • Collapsed: до 3 actions
  • Expanded: до 5-6 actions
  • Large image (album art)
  • Автоматически наследует цвета из image

Messaging:

  • Real-time communication
  • Reply action прямо из notification
  • Conversation grouping

Call:

  • Large format для incoming/outgoing calls
  • Full-screen intent для high priority
  • До 3 actions в expanded view
  • Типы: text buttons, reply input, media controls
  • Duplicate tapping behavior на body
  • Succinctly summarize в header
  • Preview content в text
  • Set channels и categories
  • Group notifications если multiple
  • Используйте appropriate priority
  • Для video playback, video calls
  • Overlay поверх других apps
  • Minimal controls для space efficiency

Widgets — customizable home screen elements, “at-a-glance” views важных данных и функций.

  1. Information widgets — отображают crucial info (weather, stocks)
  2. Collection widgets — список items (messages, articles)
  3. Control widgets — remote controls (media player, home automation)
  4. Hybrid widgets — комбинация типов
  • Quick access к frequently used tasks
  • Search toolbar фокусирует на search как primary action
  • Buttons для toggles и task links
  • Min button size: 48 dp tappable
  • Organize items в scannable format
  • News headlines, to-do lists, messages
  • Containerized или containerless presentation
  • Rows и columns
  • Gallery views, app shortcuts
  • Focus на одном piece of content
  • Progress, statistics, hero content
CellsPortrait WidthLandscape Width
2×2171 dp201 dp
3×2261 dp307 dp
4×2351 dp413 dp
5×2441 dp519 dp

Правила:

  • Widget должен заполнять allocated grid space полностью
  • Container stretches edge-to-edge
  • Responsive к разным sizes
  • Design для минимум одного recommended size
  • Thoroughly test на разных devices
  • Material color roles и tokens
  • Support dynamic color (Android 12+)
  • Dark mode adaptation
  • System corner radius property
  • Consistency across devices
  • Prevents content clipping
  • 5 text roles: display, headline, title, subtitle, body
  • Font weight и size для hierarchy
  • Line spacing и letter spacing
  • During placement: если widget пустой без settings
  • After placement: если есть preferred default
  • Limit picker previews to 6-8 variations
  • Clear path through options
  • Material Design components для configuration UI
  • 1-2 screens максимум
  • High quality previews в widget picker
  • Appropriate sizing
  • Clear value proposition

Adaptive icons адаптируются к разным устройствам и user theming.

  1. Foreground layer — main artwork
  2. Background layer — solid color или image
  3. Monochrome layer — для themed icons (Android 13+)
  • Full asset size: 108×108 dp
  • Safe zone (visible area): 72×72 dp (центр)
  • Mask area: 66×66 dp
  • Visual artifacts: Избегать в outer 18 dp

Adaptive icons поддерживают разные masks:

  • Circle
  • Squircle
  • Rounded square
  • Square
  • Teardrop

OEM определяет mask для device.

  • User может включить themed app icons
  • System tints icon используя wallpaper colors
  • Требуется monochrome layer
  • Android 16 QPR 2: auto-theming для apps без monochrome
  • Size: 512×512 px
  • Format: PNG (32-bit)
  • Corner radius: Динамически применяется Google Play (30% от размера)
  • Shadow: Динамически применяется Google Play
  • Artwork может заполнять всё пространство (full bleed)
  • Или использовать keyline grid для logos
  • Background color без transparency
  • Избегать text в icon

  • Standard Android visual design patterns
  • Material Design Components вместо platform components
  • Consistent user experience
  • Minimum: 48×48 dp
  • Spacing между targets: 8 dp
  • Text: минимум 4.5:1
  • Large text: минимум 3:1
  • UI components: минимум 3:1
  • Responsive UI (fast launch, no lag)
  • Smooth 60 fps animations
  • Preserve state across configuration changes
  • Support screen rotation
  • No crashes или ANRs
  • Efficient battery usage
  • Minimal memory footprint
  • Follow security best practices
  • TalkBack compatibility
  • Switch Access support
  • Proper content descriptions
  • Keyboard navigation

МетрикаЗначение
Touch target minimum48×48 dp
Text contrast minimum4.5:1
Large text contrast3:1
UI element contrast3:1
Baseline grid unit8 dp
Fine grid unit4 dp
Min body text12 sp
Compact margin16 dp
Standard button height40 dp
FAB standard size56×56 dp
Navigation bar height80 dp
Top app bar height64 dp
List item single-line56 dp
Card corner radius12 dp
Dialog corner radius28 dp
Chip height32 dp
Text field height56 dp
ClassWidthColumns
Compact<600 dp4
Medium600-839 dp8
Expanded840+ dp12
ElementHeight
Status bar~24 dp
Gesture navigation bar~24 dp
3-button navigation bar~48 dp
ComponentКогда использовать
Navigation Bar3-5 destinations, Compact
Navigation Rail3-7 destinations, Medium+
Navigation Drawer>5 destinations, complex hierarchy
TabsSecondary grouping
  • Status bar transparent
  • Navigation bar transparent (gesture) или translucent (buttons)
  • Content draws behind system bars
  • Content padded from system bar insets
  • Touch targets not under gesture insets
  • Display cutouts accounted for
  • Touch targets ≥48 dp
  • Text contrast ≥4.5:1
  • Font size in sp
  • Content descriptions для images/icons
  • Not relying on color alone
  • Support для TalkBack
  • Support для Switch Access


Версия документа: 2026-02-04 Источник: developer.android.com/design