![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-hero.png?authuser=0000&hl=ru)
Макет определяет визуальную структуру, позволяющую пользователю взаимодействовать с вашим приложением, например, в действии. Android предоставляет ряд библиотек, канонических отправных точек и методов отображения и позиционирования контента.
Вынос
Соблюдайте безопасные области устройства, которые включают в себя такие части пользовательского интерфейса, как вырезы дисплея, вставки по краям, боковые дисплеи, программные клавиатуры и системные панели.
Что нужно сделать: предоставить пользователям гибкую раскладку для взаимодействия с клавиатурой.
Видео 1. Обеспечение гибкого макета для взаимодействия пользователей
Держите важные взаимодействия, такие как основная навигация, в доступной области экрана.
Рисунок 1. Плавающие кнопки действий (FAB) обеспечивают видимую и доступную точку взаимодействия. Используйте сдерживание для группировки связанного контента, чтобы направлять пользователя через контент и действия.
Рисунок 2. Карточки, использующие явное сдерживание для группировки контента по связанным действиям. Обеспечьте согласованное соответствие между похожим контентом и элементами пользовательского интерфейса.
Не делайте этого: нарушайте читаемость из-за непоследовательного расположения одинаковых элементов, из-за чего дизайн может выглядеть беспорядочным.
Что нужно сделать: Установите одинаковое расстояние между одинаковыми элементами.
Рисунок 3. Не нарушайте читаемость Не придерживайтесь книжной ориентации или идеализированного макета: рассмотрите различные соотношения сторон, классы размеров и разрешения, с которыми могут столкнуться пользователи.
Не перегружайте пользователя слишком большим количеством действий за просмотр.
При создании пользовательских макетов обратите внимание на то, как контент должен располагаться в макете, используя выравнивание, ограничения или условия гравитации. Укажите, как изображения должны реагировать на контейнер для правильного отображения.
Части типичного экрана приложения Android
Большинство приложений Android состоят из областей, называемых системными панелями , областью навигации и телом.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-4-parts-of-an-android-app.png?authuser=0000&hl=ru)
Системные панели
Строка состояния и панель навигации, известные под общим названием «системные панели», отображают важную информацию, такую как уровень заряда батареи, время и уведомления, а также обеспечивают прямое взаимодействие с устройством из любого места. Подробнее о системных панелях читайте .
Системные панели являются неотъемлемой частью интерфейса устройства. Добавьте их в качестве верхнего слоя вашего дизайна, чтобы они были учтены в макете экрана. В противном случае пользователи могут ошибочно предположить, что цель состоит в том, чтобы скрыть их, вы упустите возможность стилизовать их, и интервалы могут оказаться отключенными.
Добавьте стержни в качестве верхнего слоя. Используйте android:navigationBarColor
и android:statusBarColor
чтобы применить цвета к системным панелям в теме вашего приложения.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-5-system-bars.png?authuser=0000&hl=ru)
Регион навигации
Навигация представляет собой различные возможности, которые позволяют пользователю перемещаться по вашему приложению, получать доступ к важным действиям или по платформе Android.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-6-navigation-region.png?authuser=0000&hl=ru)
Область тела
Область тела содержит содержимое экрана. Содержимое тела состоит из дополнительных группировок и параметров макета. Он должен продолжаться в областях навигации и системной панели.
Объявите WindowCompat.setDecorFitsSystemWindows(window, false)
для вставок от края до края.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-7-body-region.png?authuser=0000&hl=ru)
Чтобы определить подходящую композицию и шаблоны навигации для вашего макета, постарайтесь понять, как пользователи взаимодействуют с вашим контентом и как они перемещаются по информационной архитектуре вашего приложения. Это понимание может помочь вашему дизайну стать более ориентированным на пользователя за счет создания пользовательского интерфейса, с которым пользователи смогут действовать.
Состав и структура контента
Создайте гибкий поток и ритм с помощью структуры и методов сдерживания вашего контента.
Базовая структура: используйте поля и столбцы для визуальных ограждений.
Чтобы начать создавать прочную структуру с последовательными ограждениями, добавьте в макеты поля и столбцы.
Поля обеспечивают расстояние между левым и правым краями экрана и содержимого. Стандартное значение поля для компактного размера составляет 16 dp, но поля следует адаптировать для соответствия экранам большего размера. Содержимое тела и действия вашего приложения должны оставаться внутри этих полей и выравниваться с ними.
На этом этапе вы также можете обеспечить вставку безопасных зон или вставок. Вставки на системной панели не позволяют важным действиям попасть под системные панели. Подробности см. в разделе Размещение контента за системными панелями .
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-8-margins-system-bar-inset.png?authuser=0000&hl=ru)
Используйте столбцы для создания гибкой структуры сетки для единообразного выравнивания и для обеспечения вертикального определения макета путем разделения содержимого внутри основной области. Контент размещается в областях экрана, содержащих столбцы. Эти столбцы придают структуру вашему макету, обеспечивая удобную структуру для расположения элементов.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-9-four-columns.png?authuser=0000&hl=ru)
Используйте сетку столбцов, чтобы выровнять содержимое по базовой сетке , сохраняя при этом гибкие размеры. Сетка столбцов может соответствовать различным форм-факторам, изменяя размеры столбцов и количество столбцов в зависимости от размера экрана в определенных точках, одновременно позволяя масштабировать контент. Избегайте слишком детальной сетки столбцов: именно для этого и предназначена базовая сетка: обеспечение единообразных единиц измерения интервалов.
Будьте осторожны при создании сопутствующей сетки строк, поскольку она может ограничить горизонтальное масштабирование контента в зависимости от ориентации и форм-фактора. Обычно установление правил заполнения обеспечивает необходимую визуальную согласованность.
Используйте сдерживание для визуальной группировки элементов.
Под сдерживанием подразумевается совместное использование пустого пространства и видимых элементов для создания визуальной группировки. Контейнер — это фигура, представляющая замкнутую область. В одном макете вы можете группировать элементы со схожим содержанием или функциональностью и отделять их от других элементов с помощью открытого пространства, типографики и разделителей.
Вы можете группировать похожие элементы вместе с пробелами или видимыми разделителями, чтобы помочь пользователю ориентироваться в контенте.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-11-breaking-content-into-groupings.png?authuser=0000&hl=ru)
Неявное включение использует пустое пространство для визуальной группировки содержимого и создания границ контейнера, тогда как явное включение использует такие объекты, как разделительные линии и карточки, для группировки содержимого.
На следующем рисунке показан пример использования неявного включения для хранения заголовка и основной копии. Сетка столбцов используется для выравнивания и создания группировок. Основные моменты явно содержатся в карточках. Использование иконографии и иерархии типов для большего визуального разделения.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-12-implicit-containment.png?authuser=0000&hl=ru)
Позиционирование контента
В Android есть несколько способов обработки элементов контента в соответствующих контейнерах, которые помогают правильно расположить их, включая гравитацию, интервалы и масштабирование.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-13-containment-boundaries.png?authuser=0000&hl=ru)
Гравитация — это стандарт размещения объекта в потенциально большем контейнере для конкретных случаев использования. На следующем рисунке показаны примеры расположения объектов в начале и центре ( 1 ), сверху и по центру по горизонтали ( 2 ), внизу слева ( 3 ), а также в конце и справа ( 1 ).
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-14-positional.png?authuser=0000&hl=ru)
Масштабирование
Масштабирование имеет решающее значение для соответствия динамическому контенту, ориентации устройства и размерам экрана. Элементы могут оставаться фиксированными или масштабироваться.
Обратите внимание на то, как изображения отображаются в своих контейнерах с масштабированием и положением, важно, чтобы убедиться, что оно выглядит так, как вы хотите, независимо от контекста устройства, иначе основной фокус изображения может оказаться обрезанным, изображения могут быть слишком маленькими или большими для макета. или другие нежелательные эффекты.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-15-center-cropped-image.png?authuser=0000&hl=ru)
Содержимое, не отмеченное нотациями, может выглядеть иначе, чем вы ожидаете или хотите.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-16-make-sure-to-notate.png?authuser=0000&hl=ru)
Закрепленный контент
Многие элементы имеют встроенные возможности взаимодействия, прокрутки и позиционирования с помощью слотов или каркасов. Некоторые элементы можно изменить, чтобы они оставались фиксированными, а не реагировали на прокрутку, например кнопки плавающих действий (FAB), в которых содержатся критические действия.
Выравнивание
Используйте AlignmentLine
для создания пользовательских линий выравнивания, которые родительские макеты могут использовать для выравнивания и расположения своих дочерних элементов.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-17-dont-disrupt-readability.png?authuser=0000&hl=ru)
Не делайте этого: нарушайте читаемость из-за непоследовательного расположения одинаковых элементов, из-за чего дизайн может выглядеть беспорядочным.
Что нужно сделать: Установите одинаковое расстояние между одинаковыми элементами.
Компоновка компонентов
Компоненты Material 3 предоставляют свои собственные конфигурации и состояния для взаимодействия и контента.
Compose предоставляет удобные макеты для объединения компонентов материалов в общие шаблоны экрана. Составные элементы, такие как Scaffold, предоставляют слоты для различных компонентов и других элементов экрана. Узнайте больше о компонентах материала и макете .
Макеты и шаблоны навигации
Если ваше приложение содержит несколько пунктов назначения, по которым пользователи могут перемещаться, мы рекомендуем использовать пары макета и навигации, которые обычно используются другими приложениями. Поскольку у многих пользователей уже есть мысленные модели для этих пар, ваше приложение будет для них более интуитивно понятным.
Сочетания макета и навигации
Панель навигации и модальный ящик навигации используются в качестве основных шаблонов навигации для представлений родительского макета и основных пунктов назначения навигации.
Панель навигации может содержать от трех до пяти пунктов назначения навигации на одном уровне иерархии. Этот компонент преобразуется в навигационную панель для больших экранов.
Хотя панель навигации может содержать более пяти пунктов назначения, этот шаблон не так идеален, как панель навигации, поскольку при компактных размерах необходимо доходить до верхней панели.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-18-primary-navigation-destinations.png?authuser=0000&hl=ru)
Вкладки «Материал 3» и нижняя панель приложения — это вторичные шаблоны навигации, которые можно использовать в качестве дополнения к основной навигации или для отображения в дочерних представлениях.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-19-tabs-secondary.png?authuser=0000&hl=ru)
Действия макета
Предоставьте элементы управления, позволяющие пользователям выполнять действия. Общие шаблоны включают действия верхней панели, плавающую кнопку действия (FAB) и меню.
Для действий наивысшей важности FAB предоставляет пользователю большую и заметную кнопку. На этом уровне выполняйте только одно действие за раз. FAB может отображаться в разных размерах и в развернутой форме, включающей метку. Используйте Scaffold
, чтобы закрепить FAB, чтобы он всегда был виден даже при прокрутке.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-20-FAB-provided.png?authuser=0000&hl=ru)
Вы можете разместить второстепенные действия на верхней панели или, если они сгруппированы рядом с соответствующим содержимым, на странице.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-21-alert-action.png?authuser=0000&hl=ru)
Для любых дополнительных действий, которые не требуются быстро или часто, добавьте их в дополнительное меню.
Канонические макеты
Используйте канонические макеты в качестве отправной точки, готовые к использованию композиции, которые помогают адаптировать макеты к распространенным сценариям использования и размерам экрана. Эти макеты эстетичны и функциональны и основаны на руководстве Материала 3 .
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-22-canonical-layouts.png?authuser=0000&hl=ru)
Платформа Android включает специализированные компоненты, которые делают реализацию макетов простой и надежной с использованием API-интерфейсов Jetpack Compose или Views .
Подробный макет списка
Макет с подробностями списка позволяет пользователям просматривать списки элементов, которые имеют описательную, пояснительную или другую дополнительную информацию — сведения об элементе. На экранах компактных размеров виден только список или подробный вид. Отображая коллекцию контента в виде строк, списки составляют наиболее распространенную форму макетов для приложений. List-detail идеально подходит для приложений обмена сообщениями, менеджеров контактов, файловых браузеров или любого приложения, где контент может быть организован в виде списка элементов, раскрывающих дополнительную информацию.
Контент может быть статическим или динамическим.
- Динамический контент — это контент, который ваше приложение обрабатывает «на лету». Он идеально подходит для отображения пользовательского контента или отражения предпочтений или действий пользователя. Например, представьте себе приложение для фотографий с прокручиваемым списком фотографий, созданных пользователем, который уникален для каждого пользователя и меняется по мере того, как пользователь загружает больше изображений. Эти изображения представляют собой динамический контент.
- Статический контент представляет собой жестко запрограммированный контент, который можно изменить только путем внесения изменений непосредственно в код вашего приложения. Примерами статического контента являются изображения и текст, которые может видеть каждый пользователь.
Файл Now in Android Figma содержит несколько примеров макетов. В следующем примере показана одномерная коллекция контента.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-23-one-dimension-collection.png?authuser=0000&hl=ru)
Изучите списки материалов 3 , чтобы получить дополнительные рекомендации по проектированию компонентов и спецификаций списков.
Макет ленты
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-24-feed-layout.png?authuser=0000&hl=ru)
Макет ленты упорядочивает эквивалентные элементы контента в настраиваемой сетке для быстрого и удобного просмотра большого количества контента. (См . Рекомендации по использованию карточек в коллекции в Материале 3. ) Каналы могут иметь конфигурацию на основе списков или сеток на компактных дисплеях, обычно в виде карточек или плиток. Контент может быть динамическим, то есть он «подается» из динамического внешнего источника, такого как API.
Макет сетки состоит из строк и столбцов, составленных по подразумеваемым или явным принципам включения. (Дополнительную информацию см. в разделе «Содержание» на этой странице.) Макет сетки можно применять более жестко или располагать в шахматном порядке, чтобы варьировать строки и столбцы. Оба должны иметь последовательное применение интервалов и логики, чтобы не вводить пользователей в заблуждение. Изучите рекомендации Материала 3 по созданию каналов .
Вы можете реализовать макет канала в Compose с помощью ленивых списков или ленивых сеток или в представлениях с помощью RecyclerView
или CardView
.
Поддержка макета панели
Для мобильного представления может потребоваться вспомогательный контент или элементы управления. Обычно они представлены в виде листов или диалоговых окон и помогают основному представлению оставаться сфокусированным и незагроможденным. Ознакомьтесь с руководством M3 по использованию канонического макета вспомогательной панели .
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-25-bottom-sheets.png?authuser=0000&hl=ru)
Узнайте о направляющих M3 для нижних листов .
Относительные макеты
Входные данные, контент или другие действия могут отображаться относительно друг друга или ограничиваться родительским контейнером. Макеты могут быть более индивидуальными, но обязательно соблюдайте единообразную группировку, столбцы и интервалы.
Макеты также могут использовать комбинацию типов макетов. Например, вы можете объединить карусель или горизонтальную прокрутку с вертикальными карточками. Или вы можете представить собственную диаграмму с данными вертикального списка.
Вы можете представить контент в виде прокручиваемых строк или столбцов с помощью ленивых строк и ленивых столбцов.
Узнайте больше об основах компоновки компоновки и о том, что представляет собой составной объект.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-27-combo-of-groupings-grids.png?authuser=0000&hl=ru)
Аутентификация — это распространенная относительная схема, как показано на следующем рисунке.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-28-authentication.png?authuser=0000&hl=ru)
Полноэкранный макет — еще один распространенный макет, используемый в режиме погружения.
![](https://developer.android.com/static/images/design/ui/mobile/layout-basics-29-full-screen.png?authuser=0000&hl=ru)
Если вы работаете с представлениями вместо компоновки, вы можете использовать ConstraintLayout
для компоновки представлений в соответствии с отношениями между одноуровневыми представлениями и родительским макетом, что позволяет создавать большие и сложные макеты. ConstraintLayout
позволяет создавать полностью путем перетаскивания вместо редактирования XML с помощью редактора макета. Узнайте больше о создании пользовательского интерфейса с помощью Layout Editor .
Адаптировать макеты
Адаптивный дизайн — это практика разработки макетов, которые адаптируются к конкретным точкам останова и устройствам. Обычно мы учитываем ширину устройства, чтобы определить, где макет должен измениться или адаптироваться. И в Интернете, и в Android используются концепции адаптивного дизайна, такие как гибкие сетки и изображения, для создания макетов, которые лучше реагируют на контекст.
![ВСТАВЬТЕ АЛЬТЕРНАТИВНЫЙ ТЕКСТ ЗДЕСЬ](https://developer.android.com/static/images/design/ui/mobile/layout-basics-30-adapting-layouts.png?authuser=0000&hl=ru)
Рекомендации по проектированию адаптации макетов к расширенным размерам экрана см. в руководстве разработчика «Поддержка экранов разных размеров» в разделе «Компоновка» и на странице «Применение макета M3». Вы также можете просмотреть каноническую галерею больших экранов Android, чтобы получить вдохновение и реализовать макеты больших экранов.
Хотя не каждое приложение должно быть доступно на экране любого размера, оно дает вашим пользователям больше свободы в отношении эргономики, удобства использования и качества приложения.
- Вы можете создавать ключевые экраны (сообщающие об основных концепциях вашего приложения) с размерами классов в качестве контрольных точек, которые будут служить ориентирами.
- Или создавайте адаптивный контент, отмечая, как контент следует ограничивать, расширять или перекомпоновывать.
Дополнительную информацию о макетах см. на странице «Ознакомление с макетом Material Design 3 (M3)» .
Веб-просмотры
Webview — это представление, в котором отображаются веб-страницы внутри приложения. В большинстве случаев мы рекомендуем использовать стандартный веб-браузер, например Chrome, для доставки контента пользователю. Чтобы узнать больше о веб-браузерах, прочтите руководство по вызову браузера с намерением .