Приложения Android теперь работают на самых разных устройствах, включая телефоны, планшеты, складные устройства, компьютеры, автомобили и телевизоры. На больших экранах поддерживаются разные режимы, например разделение экрана и многооконный режим. Поэтому разработчикам следует создавать приложения, которые адаптируются к любому размеру экрана и окна независимо от ориентации устройства. В современном мире, где используется множество устройств, такие ограничения, как запрет на изменение ориентации и размера, слишком строгие.
Игнорирование ограничений на ориентацию, изменение размера и соотношение сторон
Для приложений, предназначенных для Android 17 (уровень API 37) или более поздней версии, ограничения на ориентацию, возможность изменения размера и соотношение сторон больше не применяются на дисплеях, наименьшая ширина которых превышает 600 dp. Приложения заполняют все окно независимо от соотношения сторон и ориентации экрана, выбранной пользователем. Вертикальные черные полосы по бокам не используются.
В Android 17 удалена временная возможность для разработчиков отключать ограничения на ориентацию и изменение размера на устройствах с большим экраном, которая была доступна в Android 16.
Это изменение вводит новое стандартное поведение платформы. Android переходит на модель, в которой приложения должны адаптироваться к различным ориентациям, размерам дисплея и соотношениям сторон. Ограничения, такие как фиксированная ориентация или ограниченная возможность изменения размера, мешают адаптации приложения. Сделайте приложение адаптивным, чтобы обеспечить максимальное удобство для пользователей.
Вы также можете протестировать это поведение, используя тестирование на совместимость и включив флаг совместимости UNIVERSAL_RESIZABLE_BY_DEFAULT.
Распространенные критические изменения
Игнорирование ограничений на ориентацию, изменение размера и соотношение сторон может повлиять на интерфейс приложения на некоторых устройствах, особенно на элементы, разработанные для небольших макетов, заблокированных в портретной ориентации. Например, макеты могут растягиваться, а анимации и компоненты – выходить за пределы экрана. Любые предположения о соотношении сторон или ориентации могут привести к визуальным проблемам в приложении. Узнайте, как избежать этих проблем и улучшить адаптивное поведение приложения.
Распространенная проблема со складными устройствами в альбомной ориентации или при расчете соотношения сторон в таких сценариях, как многооконный режим, режим рабочего стола или подключенные дисплеи, заключается в том, что предварительный просмотр камеры выглядит растянутым, повернутым или обрезанным. Часто это происходит на устройствах с большим экраном и складных устройствах, поскольку приложения предполагают фиксированные отношения между функциями камеры (например, соотношением сторон и ориентацией датчика) и функциями устройства (например, ориентацией устройства и естественной ориентацией). Подробнее об управлении предварительным просмотром видео…
Если разрешить поворот устройства, то действия будут воссоздаваться чаще, что может привести к потере пользовательских данных, если они не сохранены должным образом. Подробнее о том, как правильно сохранять состояние интерфейса…
Подробная информация о реализации
На устройствах с большим экраном в полноэкранном режиме и многооконном режиме игнорируются следующие атрибуты манифеста и API среды выполнения:
screenOrientationresizeableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
Следующие значения screenOrientation, setRequestedOrientation() и getRequestedOrientation() игнорируются:
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
Параметры android:resizeableActivity="false",
android:minAspectRatio и android:maxAspectRatio не влияют на возможность изменения размера экрана.
Исключения
Ограничения Android 17, связанные с ориентацией, изменением размера и соотношением сторон, не применяются в следующих случаях:
- Игры (на основе параметра
android:appCategory) - Пользователи явно согласились на режим работы приложения по умолчанию в настройках соотношения сторон устройства.
- Экраны, минимальная ширина которых меньше
sw600dp