Ориентация приложения, соотношение сторон и возможность изменения размера

Приложения Android работают на устройствах всех типов: телефоны, планшеты, складные устройства, Chromebook, автомобили, телевизоры и даже XR. Чтобы адаптироваться к этой разнообразной среде, ваше приложение должно поддерживать все форм-факторы устройств и размеры дисплеев.

Android 16 (API уровня 36) позволяет приложениям адаптироваться к различным форм-факторам и размерам дисплеев, переопределяя ограничения приложений по ориентации экрана, соотношению сторон и возможности изменения размера. Переопределения применяются к устройствам с наименьшей шириной >= 600dp, что определяет следующее:

  • Таблетки
  • Внутренние дисплеи складных устройств с большим экраном
  • Оконный режим рабочего стола (на всех форм-факторах)

Приложения, ориентированные на API уровня 36, поддерживают изменение размера и могут переходить в многооконный режим (эквивалент resizeableActivity="true" ), если наименьшая ширина дисплея >= 600dp.

Приложение отображается в виде почтового ящика на развернутом большом экране устройства до Android 16, но отображается в полноэкранном режиме при использовании Android 16. Приложение показывает больше новостей в полноэкранном режиме, чем в виде почтового ящика.
Рисунок 1. Лента новостей для разработчиков, ранее отображавшаяся в виде почтового ящика на устройствах с большим экраном (слева), отображается на весь экран при использовании Android 16 (справа).

Android 16 реализует последовательную модель адаптивного дизайна приложений, которая оптимизирует пользовательский опыт, учитывая предпочтения пользователя в отношении ориентации устройства, соотношения сторон и размера дисплея.

Изменения

Следующие атрибуты манифеста и API игнорируются для приложений, ориентированных на Android 16 (уровень API 36) на больших экранах:

Атрибут или API Игнорируемые значения
screenOrientation portrait , landscape , reversePortrait , reverseLandscape , sensorPortrait , sensorLandscape , userPortrait , userLandscape
resizeableActivity все
minAspectRatio все
maxAspectRatio все
setRequestedOrientation()

getRequestedOrientation()
portrait , landscape , reversePortrait , reverseLandscape , sensorPortrait , sensorLandscape , userPortrait , userLandscape

Исключения

Исключения из изменений Android 16 включают следующее:

  • Дисплеи меньше sw600dp (большинство телефонов, раскладушек и внешние дисплеи складных устройств с большим экраном)

  • Игры, основанные на флаге android:appCategory

    Опубликуйте свою игру с помощью Android App Bundles и Play App Signing, что позволит Google Play управлять флагом и автоматически предоставлять преимущества app bundles. См. также Обзор манифеста приложения .

  • Пользователь выбирает поведение приложения по умолчанию в настройках соотношения сторон.

Уклоняться

Чтобы отказаться от поведения API уровня 36, объявите свойство манифеста PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY .

Чтобы отказаться от определенного действия, задайте свойство в элементе <activity> :

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Чтобы отказаться от всего приложения, задайте свойство в элементе <application> :

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Тесты

Чтобы проверить, повлияют ли изменения Android 16 на ваше приложение, используйте эмуляторы серий Pixel Tablet и Pixel Fold в Android Studio и установите targetSdkPreview = "Baklava" в файле build.gradle модуля вашего приложения.

Или используйте фреймворк совместимости приложений на тестовых устройствах, включив флаг UNIVERSAL_RESIZABLE_BY_DEFAULT (см. Инструменты фреймворка совместимости ).

Вы можете автоматизировать тестирование с помощью фреймворка тестирования Espresso и API тестирования Jetpack Compose .

Распространенные проблемы

Приложения, ограничивающие ориентацию устройства, соотношение сторон или возможность изменения размера приложения, могут иметь проблемы с отображением на Android 16, такие как перекрывающиеся макеты.

Чтобы обеспечить оптимальный пользовательский интерфейс на телефонах, складных устройствах, планшетах, Chromebook, автомобильных дисплеях или XR, сделайте свое приложение отзывчивым и адаптивным:

  • Избегайте растянутых компонентов пользовательского интерфейса: макеты, разработанные для стандартных портретных экранов телефонов, скорее всего, не смогут соответствовать другим соотношениям сторон. Например, элементы пользовательского интерфейса, заполняющие всю ширину дисплея, будут выглядеть растянутыми в альбомной ориентации. Добавьте максимальную ширину к компонентам, чтобы избежать растяжения.

  • Включить прокрутку макетов: Если макеты не прокручиваются, пользователи могут не иметь доступа к кнопкам или другим элементам пользовательского интерфейса, которые находятся за пределами экрана в альбомной ориентации. Включить прокрутку макетов приложений, чтобы гарантировать, что весь контент доступен независимо от высоты дисплея.

  • Обеспечьте совместимость камеры в портретной и альбомной ориентации: Предварительные просмотры видоискателя камеры, которые предполагают определенное соотношение сторон и ориентацию относительно сенсора камеры, могут привести к растянутым или перевернутым предварительным просмотрам на несоответствующих дисплеях. Убедитесь, что видоискатели правильно вращаются при изменении ориентации. Разрешите видоискателям подстраиваться под соотношения сторон пользовательского интерфейса, которые отличаются от соотношения сторон сенсора.

  • Сохранение состояния при изменении размера окна: снятие ограничений ориентации и соотношения сторон может привести к частому изменению размера окна приложения в ответ на то, как пользователи предпочитают использовать приложение, например, путем поворота, сворачивания или разворачивания устройства или изменения размера приложения в многооконном или оконном режиме рабочего стола. Изменения конфигурации, такие как изменение ориентации и изменение размера окна, вызывают повторное выполнение действий (по умолчанию). Чтобы обеспечить оптимальный пользовательский опыт, сохраняйте состояние приложения при изменении конфигурации, чтобы ваше приложение сохраняло данные (например, ввод формы), а пользователи могли поддерживать контекст.

  • Используйте классы размеров окна: Поддерживайте различные размеры окна и соотношения сторон без настроек, специфичных для конкретного устройства. Предполагайте, что размеры окна будут часто меняться. Используйте классы размеров окна, чтобы охарактеризовать размеры окна, а затем примените соответствующую адаптивную компоновку.

  • Создавайте адаптивные макеты: в классах размеров окон адаптивные макеты подстраиваются под изменения размеров дисплея, чтобы всегда создавать оптимальное представление приложения.

Хронология

  • Android 16 (2025): поддержка всех ориентаций и соотношений сторон, а также изменение размера приложений является базовым функционалом для устройств с большим экраном (наименьшая ширина экрана >= 600 точек на дюйм) для приложений, ориентированных на API уровня 36. Однако разработчики могут отказаться от этой поддержки.

  • Выпуск Android в 2026 году: поддержка всех ориентаций и соотношений сторон, а также изменение размера приложений станут базовыми функциями для устройств с большим экраном (минимальная ширина экрана >= 600 точек на дюйм) для приложений, ориентированных на API уровня 37. У разработчиков не будет возможности отказаться от этой функции.

Целевой уровень API Применимые устройства Разрешен отказ разработчика
36 (Андроид 16) Устройства с большим экраном (наименьшая ширина экрана >= 600dp) Да
37 (ожидается) Устройства с большим экраном (наименьшая ширина экрана >= 600dp) Нет

Крайние сроки для таргетинга конкретных уровней API зависят от магазина приложений. Google Play потребует от приложений таргетинга на уровень API 36 с августа 2026 года, на уровень API 37 с августа 2027 года.

Дополнительные ресурсы