Сегодня используется более 300 миллионов устройств Android с большим экраном, включая планшеты, складные устройства, устройства ChromeOS, автомобильные дисплеи и телевизоры, и их число постоянно растет. Чтобы обеспечить оптимальный пользовательский опыт на растущем количестве и разнообразии устройств с большим экраном, а также на стандартных телефонах, создавайте адаптивные приложения.
Что такое адаптивные приложения?
Адаптивные приложения изменяют макеты на основе изменений в отображении приложения, в первую очередь размера окна приложения. Но адаптивные приложения также учитывают изменения в положении складных устройств, например, положение стола или книги, а также изменения в плотности экрана и размере шрифта.
Вместо того, чтобы просто растягивать или сжимать элементы пользовательского интерфейса в ответ на разные размеры окна, адаптивные приложения заменяют компоненты макета и показывают или скрывают контент. Например, на стандартных телефонах адаптивное приложение может отображать нижнюю панель навигации, но на больших экранах — навигационную направляющую. На больших экранах адаптивные приложения отображают больше контента, например, двухпанельный макет со списком и подробностями; на маленьких экранах — меньше контента, либо список, либо подробности.
Раньше приложения обычно работали на весь экран. Сегодня приложения работают в многооконном режиме в окнах произвольного размера, независимо от размера экрана устройства. Пользователи могут изменить размер окна в любое время. Поэтому даже на одном типе устройства приложения должны быть адаптивными.
Адаптивные приложения отлично выглядят и работают на любом устройстве в любой конфигурации.
Зачем создавать адаптивные пользовательские интерфейсы?
Пользователи ожидают, что ваше приложение будет работать безупречно на всех их устройствах и предоставлять расширенные возможности на больших экранах. Пользователи выполняют многозадачность в многооконном режиме для улучшения опыта использования приложения и повышения производительности.
Приложения, ограниченные однозадачностью на стандартных телефонах, упускают из виду расширяющуюся пользовательскую базу разнообразных возможностей.
Гугл Плей
Google Play предоставляет подборки и рекомендации приложений, предназначенные специально для планшетов и складных устройств, что позволяет пользователям находить высококачественные приложения.
Play ранжирует оптимизированные для больших экранов приложения и игры выше, чем неоптимизированные приложения. Play основывает рейтинг на рекомендациях по качеству приложений для больших экранов . Более высокий рейтинг повышает обнаруживаемость, позволяя пользователям нескольких устройств видеть рейтинги и обзоры, предназначенные для больших экранов, на своих телефонах.
Приложения, не соответствующие стандартам качества больших экранов Play Store, отображают предупреждение на странице сведений о приложении. Предупреждение информирует пользователей о том, что приложение может работать некорректно на их устройствах с большими экранами.

Создавайте адаптивные приложения, чтобы расширить возможности поиска в Google Play и увеличить количество устройств, на которые можно загрузить ваше приложение.
Как начать
Думайте об адаптивном дизайне на всех этапах разработки приложения от планирования до развертывания. Расскажите графическим дизайнерам об адаптивном дизайне. Разработайте свое приложение так, чтобы оно было адаптивным, и вы создадите управляемое, расширяемое и готовое к будущим форм-факторам и режимам окон приложение.
Чтобы создать адаптивное приложение, поддерживающее все размеры и конфигурации дисплеев, выполните следующие действия:
- Используйте классы размеров окон для принятия решений по компоновке
- Создавайте с помощью адаптивной библиотеки Compose Material 3
- Поддержка ввода за пределами прикосновения
- Тест на всех типах устройств
Классы размеров окон
Размеры окна приложения могут отличаться на разных устройствах (или на одном устройстве в случае складных устройств) даже если приложение полноэкранное. Разные ориентации устройства приводят к разным соотношениям сторон. В многооконном режиме размер окна приложения, соотношение сторон и ориентация могут отличаться от экрана устройства.
Адаптивные приложения упрощают и обобщают задачу определения и управления размером окна, соотношением сторон и ориентацией, учитывая только окно приложения при рендеринге макетов, что также работает, когда окно приложения занимает весь экран.
Классы размеров окон классифицируют окна приложений как компактные , средние или расширенные в зависимости от ширины или высоты окна.

Вычислите WindowSizeClass
вашего приложения с помощью функции верхнего уровня currentWindowAdaptiveInfo()
библиотеки Compose Material 3 Adaptive . Функция возвращает экземпляр WindowAdaptiveInfo
, который содержит windowSizeClass
. Ваше приложение получает обновления всякий раз, когда изменяется класс размера окна:
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
Панели содержимого
Макет действия иногда называют экраном . Например, ваше приложение может иметь домашний экран, экран списка и экран сведений об элементе. Терминология подразумевает, что каждое действие заполняет экран устройства.
Однако на экранах устройств, которые достаточно велики для поддержки класса размера окна расширенной ширины, на экране могут одновременно отображаться несколько экранов активности. Панель — более точный термин для отображения контента отдельных активностей.
Классы размеров окон позволяют вам определить, сколько панелей содержимого будет отображаться в многопанельных макетах, как указано в Material Design .

Панели можно перемещать. В классах компактных и средних окон приложения отображают одну панель; и поэтому навигация к любому пункту назначения отображает одну панель.
В классе расширенного размера окна приложения могут отображать связанный контент в нескольких панелях, например, в макете списка-детали. Навигация к любой панели отображает макет из двух панелей. Если размер окна изменяется на компактный или средний, адаптивные приложения отображают только одну панель, пункт назначения навигации, либо список, либо детали.
Составьте Материал 3 Адаптивный
Jetpack Compose — это современный декларативный подход к созданию адаптивных приложений без дублирования и бремени обслуживания множества файлов макетов.
Библиотека Compose Material 3 Adaptive содержит компонуемые элементы, которые управляют классами размеров окон, компонентами навигации, многопанельными макетами, а также складными положениями и расположением шарниров, например:
NavigationSuiteScaffold
: автоматически переключается между панелью навигации и навигационной направляющей в зависимости от класса размера окна приложения и положения устройства.ListDetailPaneScaffold
: реализует каноническую компоновку списка-детали .Адаптирует макет к размеру окна приложения. Представляет список и детали элемента списка в панелях рядом в классе расширенного размера окна, но только список или детали в классах компактного и среднего размера окна.
SupportingPaneScaffold
: реализует каноническую компоновку поддерживающей панели .Отображает основную панель содержимого и вспомогательную панель в классе расширенного размера окна, но только основную панель содержимого в классах компактного и среднего размера окна.
Библиотека Compose Material 3 Adaptive является ключевой зависимостью для разработки адаптивных приложений.
Конфигурация и непрерывность
Адаптивные приложения сохраняют непрерывность при изменении конфигурации.
Изменение конфигурации происходит при изменении размера окна приложения, изменении положения складного устройства или изменении плотности экрана или шрифта.
По умолчанию изменения конфигурации пересоздают активность приложения, и все состояние активности теряется. Для поддержания непрерывности адаптивные приложения сохраняют состояние в методе onSaveInstanceState()
активности или в ViewModel
.
Поза
Адаптивные приложения реагируют на изменения в позе складных устройств. Позы включают в себя позу стола и книгу.

Интерфейс WindowInfoTracker
в Jetpack WindowManager позволяет получить список объектов DisplayFeature
для устройства. Среди функций отображения есть FoldingFeature.State
, который указывает, полностью или наполовину открыто устройство.
Библиотека Compose Material 3 Adaptive предоставляет функцию верхнего уровня currentWindowAdaptiveInfo()
, которая возвращает экземпляр WindowAdaptiveInfo
, содержащий windowPosture
.
Ввод за пределами прикосновения
Пользователи часто подключают внешние клавиатуры, трекпады, мыши и стилусы к устройствам с большим экраном. Периферийные устройства повышают производительность пользователя, точность ввода, личное самовыражение и доступность. Большинство устройств ChromeOS поставляются со встроенными клавиатурами и трекпадами.
Адаптивные приложения поддерживают внешние устройства ввода, но фреймворк Android выполняет большую часть работы за вас:
Jetpack Compose 1.7 и выше: навигация по вкладкам с помощью клавиатуры, а также щелчки, выбор и прокрутка с помощью мыши или трекпада поддерживаются по умолчанию.
Библиотека Jetpack
androidx.compose.material3
: позволяет пользователям писать в любом компонентеTextField
с помощью стилуса.Keyboard Shortcuts Helper : Делает так, чтобы сочетания клавиш платформы и приложений Android были видны пользователям. Опубликуйте сочетания клавиш вашего приложения в Keyboard Shortcuts Helper, переопределив обратный вызов окна
onProvideKeyboardShortcuts()
.
Для полной поддержки форм-факторов всех размеров адаптивные приложения поддерживают ввод всех типов.
Как тестировать адаптивные приложения
Тестируйте разные размеры экрана и окна, а также разные конфигурации устройств. Используйте скриншоты на стороне хоста и предварительные просмотры Compose для проверки макетов приложений. Запускайте приложение на эмуляторах Android Studio и удаленных устройствах Android, размещенных в центрах обработки данных Google.
Рекомендации по качеству приложений для больших экранов
Руководство по качеству приложений для больших экранов поможет вам убедиться, что ваше адаптивное приложение хорошо работает на планшетах, складных устройствах и устройствах ChromeOS. Руководство включает тесты, которые позволяют вам проверить функциональность приложения для критически важных пользовательских путешествий. Хотя руководство ориентировано на большие экраны, оно совместимо со всеми размерами экранов.
Несколько конфигураций
Интерфейс DeviceConfigurationOverride
в Compose 1.7 и выше позволяет вам переопределять различные аспекты конфигурации устройства. API имитирует различные конфигурации устройства локализованным способом для любого компонуемого контента, который вы хотите протестировать. Например, вы можете протестировать несколько произвольных размеров пользовательского интерфейса за один запуск вашего тестового набора на одном устройстве или эмуляторе.
С помощью функции расширения DeviceConfigurationOverride.then()
вы можете одновременно тестировать несколько параметров конфигурации, таких как размер шрифта, локаль, тема и размер макета.
Скриншоты на стороне хоста
Тесты скриншотов на стороне хоста — это быстрый и масштабируемый способ проверки визуального вида макетов вашего приложения. Используйте скриншоты на стороне хоста для тестирования вашего пользовательского интерфейса для различных размеров дисплея.
Для получения дополнительной информации см. Тестирование скриншота предварительного просмотра Compose .
Составить предварительные просмотры
Предварительные просмотры Compose позволяют вам проверять пользовательский интерфейс вашего приложения в представлении дизайна Android Studio. Предварительные просмотры используют аннотации, такие как @PreviewScreenSizes
, @PreviewFontScale
и @PreviewLightDark
, чтобы вы могли видеть компонуемый контент в различных конфигурациях. Вы даже можете взаимодействовать с предварительными просмотрами.
Android Studio также выявляет распространенные проблемы с удобством использования в предварительных версиях, такие как слишком широкие кнопки или текстовые поля.
Для получения дополнительной информации см. раздел Предварительный просмотр пользовательского интерфейса с помощью компонуемых предпросмотров .
Эмуляторы
Android Studio предлагает множество эмуляторов для тестирования различных размеров макетов:
- Эмулятор с изменяемым размером: эмулирует телефон, планшет или складное устройство и позволяет переключаться между ними на лету.
- Эмулятор Pixel Fold: эмулирует складной телефон Pixel Fold с большим экраном.
- Эмулятор Pixel Tablet: эмулирует устройство Pixel Tablet с большим экраном.
- Эмулятор рабочего стола: позволяет тестировать окна свободной формы, наведение мыши и сочетания клавиш.
Удалённая потоковая передача данных с устройства
Безопасно подключайтесь к удаленным устройствам Android, размещенным в центрах обработки данных Google, и запускайте свое приложение на последних устройствах Pixel и Samsung. Устанавливайте и отлаживайте приложения, запускайте команды ADB, поворачивайте и складывайте устройства, чтобы убедиться, что ваше приложение хорошо работает на различных реальных устройствах.
Удаленная потоковая передача данных с устройств интегрирована в Android Studio. Для получения дополнительной информации см. Android Device Streaming, powered by Firebase .
Дополнительные ресурсы
- Презентация I/O: Создание адаптивных приложений для Android