Руководство по настройке совместимости приложений с большими экранами

На этой странице вы найдете подробное руководство по настройке и указатель оверлеев конфигурации совместимости приложений для больших экранов Android.

Экран

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

Название Местоположение Тип По умолчанию
ignoreOrientationRequest display_settings.xml config false
true для больших экранов (>= 600 dp)
Описание
Позволяет пользователю свободно поворачивать действия с фиксированной ориентацией на указанном экране.
Пример:
          <display-settings>
              <config identifier="0" />
              <display
                  name="<display's uniqueId>"
                  ignoreOrientationRequest="true"/>
          </display-settings>
        

Вариант использования или контекст
Дисплей игнорирует запрошенную ориентацию всех приложений, и приложение отображается с черными полосами.
Используется на всех устройствах с большим экраном и в Android Automotive OS. Это значение по умолчанию для всех устройств с большим экраном, на которых установлена ОС Android 16 или более поздней версии и есть функция smallestScreenWidthDp >= 600dp.
config_letterboxIsDisplayRotationImmersiveAppCompatPolicyEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Включает правило совместимости поворота экрана для приложений с эффектом погружения, которое предотвращает автоматический поворот экрана в неоптимальную ориентацию в полноэкранном режиме. Это необходимо, поскольку приложения с эффектом погружения, например игры, часто не оптимизированы для всех ориентаций и при повороте могут работать некорректно. Кроме того, в некоторых играх используются датчики, поэтому пользователи могут случайно активировать поворот экрана, если он включен.
Применяется, только если включена функция ignoreOrientationRequest.

Вариант использования или контекст
Блокирует поворот экрана для приложений с эффектом погружения.

Соотношение сторон

В этом разделе перечислены все настройки конфигурации, которые влияют на конфигурацию окна на уровне действия для соотношения сторон.

Название Местоположение Тип По умолчанию
config_fixedOrientationLetterboxAspectRatio frameworks/base/core/res/res/values/config.xml Float 0.0
Описание
Настраивает соотношение сторон для черных полос при фиксированной ориентации. Значения, которые меньше или равны 1.0, игнорируются.

Вариант использования или контекст
Настраивает соотношение сторон по умолчанию, которое подходит для большинства приложений с черными полосами. Обычно ближе к квадратному соотношению сторон.
config_letterboxIsSplitScreenAspectRatioForUnresizableAppsEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Определяет, будет ли соотношение сторон разделенного экрана использоваться по умолчанию для приложений, размер которых нельзя изменить.

Пример использования или контекст
Большинство приложений, размер которых нельзя изменить, рассчитаны на вертикальную ориентацию экрана.
config_letterboxIsDisplayAspectRatioForFixedOrientationLetterboxEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, следует ли использовать соотношение сторон экрана в качестве соотношения сторон по умолчанию для всех приложений с черными полосами.

Вариант использования или контекст
Конфигурация для программного использования соотношения сторон экрана вместо настройки значения с плавающей запятой.

Камера

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

Название Местоположение Тип По умолчанию
config_isWindowManagerCameraCompatTreatmentEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Включает режим совместимости камеры для устранения проблем, вызванных несоответствием ориентации буферов камеры и окна приложения.
Это включает принудительный поворот экрана для действий с фиксированной ориентацией, связанных с камерой в полноэкранном режиме, и показ подсказки в режиме разделенного экрана.
Принудительное изменение ориентации можно отключить для отдельных приложений: OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Сценарий использования или контекст
Исправляет повернутые изображения с камеры, принудительно изменяя ориентацию экрана в соответствии с запросом приложения.
config_isWindowManagerCameraCompatSplitScreenAspectRatioEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, использует ли действие соотношение сторон для разделенного экрана, когда включена обработка совместимости камеры и действие подключено к камере в полноэкранном режиме.

Вариант использования или контекст
Исправляет растянутые изображения с камеры, добавляя черные полосы сверху и снизу, чтобы привести соотношение сторон к виду, похожему на шоколадную плитку.
Обычно используется вместе с принудительным поворотом экрана (config_isWindowManagerCameraCompatTreatmentEnabled и camera.enable_landscape_to_portrait) на устройствах с альбомной ориентацией, чтобы устранить проблемы с растянутым изображением с камеры, имитируя книжную ориентацию для действия.
camera.enable_landscape_to_portrait Системное свойство Bool false
Описание
Определяет, будет ли применяться обработка OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT.
Принудительно обрезает и поворачивает на 90 градусов изображение с камер с альбомной ориентацией, чтобы имитировать портретную ориентацию. Для всех камер с альбомной ориентацией на устройстве указана портретная ориентация датчика. Многие приложения не учитывают эту ситуацию и показывают растянутые изображения.

Вариант использования или контекст
Включает поворот и кадрирование на уровне HAL камеры. Подробнее о повороте, обрезке и масштабировании…
Добавьте в файл mk во время сборки следующее: PRODUCT_PROPERTY_OVERRIDES += camera.enable_landscape_to_portrait=true
Для этого требуется, чтобы устройство поддерживало SCALER_ROTATE_AND_CROP в HAL. Подробнее CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES…
Инструкции по реализации HAL для SCALER_ROTATE_AND_CROP приведены в разделе metadata_definitions.xml.
config_isCameraCompatSimulateRequestedOrientationTreatmentEnabled frameworks/base/core/res/res/values/config.xml Bool true
Описание
Показывает, включена ли обработка совместимости с камерой, которая имитирует запрошенную ориентацию приложения. Цель эксперимента – устранить проблемы, вызванные несоответствием ориентации буфера камеры и окна приложения. Это включает в себя добавление черных полос к действиям с фиксированной ориентацией, связанным с камерой, обрезку буфера камеры (поворот и обрезка) и изолирование поворота экрана, чтобы он соответствовал ожидаемой ориентации приложения.

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

В Android 17 и более поздних версий этот параметр отключает принудительный поворот экрана из config_isWindowManagerCameraCompatTreatmentEnabled и объединяет правила для песочницы поворота экрана, кадрирования и поворота с обрезкой для приложений камеры с фиксированной ориентацией.
config_isCameraCompatSimReqOrientationLandscapeTreatmentEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Указывает, включена ли для горизонтальных камер обработка совместимости, которая имитирует запрошенную приложением ориентацию. Цель этого решения – устранить проблемы, вызванные тем, что приложения жестко кодируют датчики камеры в портретной ориентации. Обработка включает в себя добавление черных полос сверху и снизу для действий с фиксированной ориентацией, связанных с камерой, обрезку буфера камеры (поворот и обрезка), ориентацию датчика в портретном режиме и изоляцию поворота экрана, чтобы он соответствовал ожидаемой ориентации приложения.

Вариант использования или контекст
В Android 17 и более поздних версиях эта обработка аналогична обработке для имитации запрошенной ориентации для config_isCameraCompatSimulateRequestedOrientationTreatmentEnabled, но для устройств с камерами, ориентированными на альбомную съемку.

Фон и интерфейс

В этом разделе перечислены все настройки конфигурации, применяемые к поверхности слоя Letterbox для настройки интерфейса или на уровне действий.

Название Местоположение Тип По умолчанию
config_letterboxActivityCornersRadius frameworks/base/core/res/res/values/config.xml Integer 0
Описание
Позволяет настроить радиус закругления углов для действия, представленного в режиме Letterbox. Значения меньше 0 позволяют использовать скругленные углы с радиусом, равным минимальному радиусу нижних углов устройства. Значение по умолчанию 0 отключает логику скругления углов в AppCompatLetterboxPolicy.

Вариант использования или контекст
Обычно настраивается в соответствии со скругленными углами физического устройства.
config_letterboxIsEnabledForTranslucentActivities frameworks/base/core/res/res/values/config.xml Bool false
Описание
Позволяет настроить, будет ли включено определенное поведение для кашетирования полупрозрачных действий.

Пример использования или контекст
Позволяет кашетировать полупрозрачные действия или модальные окна и ограничивать их в рамках конфигурации кашетированного действия. Правило действует в следующих странах: TransparentPolicy.
config_isCompatFakeFocusEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, включена ли отправка фиктивного фокуса совместимости для возобновленных действий в режиме разделенного экрана.
Это необходимо, поскольку некоторые игровые движки ждут, пока приложение не будет в фокусе, прежде чем отрисовывать его контент. В многооконном режиме это не происходит по умолчанию.

Вариант использования или контекст
Устаревший флаг для применения режима совместимости к игровым движкам Unity для приложений, которые становятся черными после перехода в режим разделенного экрана и отрисовываются только после того, как пользователь нажимает на приложение и оно оказывается в фокусе.
config_letterboxBackgroundType frameworks/base/core/res/res/values/config.xml Integer 0
Описание
Настраивает внешний вид углов фона письма:
  • 0 – сплошной фон, цвет которого указан в поле R.color.config_letterboxBackgroundColor.
  • 1 – цвет, указанный в R.attr.colorBackground для приложения с черными полосами.
  • 2 – цвет, указанный в R.attr.colorBackgroundFloating для приложения с черными полосами.
  • 3 – обои с размытием или темным фоном. Хотя бы один из следующих параметров должен быть больше 0: config_letterboxBackgroundWallpaperBlurRadius или config_letterboxBackgroundWallpaperDarkScrimAlpha. Если это не так или если радиус размытия указан, но размытие не поддерживается устройством и выбран этот вариант, то по умолчанию используется вариант 0. Если указанное значение выходит за пределы этого диапазона, предполагается, что выбран вариант 0.


Вариант использования или контекст
Эта функция не запущена из-за существующих проблем с производительностью. Производители могут создать собственную реализацию этой функции, но AOSP не будет обрабатывать ошибки.
config_letterboxBackgroundColor frameworks/base/core/res/res/values/config.xml Color @color/system_neutral1_1000
Описание
Настраивает цвет фона, если выполняется одно из следующих условий:true
  • Для параметра "R.integer.config_letterboxBackgroundType" выбран вариант "0".
  • Для параметра R.integer.config_letterboxBackgroundType выбран вариант 1, а для приложения не указан параметр R.attr.colorBackground.
  • Для R.integer.config_letterboxBackgroundType выбран вариант 2, а R.attr.colorBackgroundFloating для приложения не указан.
  • Для R.integer.config_letterboxBackgroundType выбран вариант 3 и запрошено размытие, но оно не поддерживается на устройстве, или не указаны ни альфа-канал темной шторки, ни радиус размытия.


Пример использования или контекст
Эта функция не запущена из-за проблем производительности. Производители устройств могут реализовать эту функцию самостоятельно, но в AOSP не будет исправляться никаких ошибок.
config_letterboxBackgroundWallpaperBlurRadius frameworks/base/core/res/res/values/config.xml Dimen 38dp
Описание
Настраивает радиус размытия для параметра 3 в R.integer.config_letterboxBackgroundType. Значения меньше 0 игнорируются, и используется значение 0.

Вариант использования или контекст
Эта функция не запущена из-за существующих проблем с производительностью. Производители могут создать собственную реализацию этой функции, но AOSP не будет обрабатывать ошибки.
config_letterboxBackgroundWallpaperDarkScrimAlpha frameworks/base/core/res/res/values/config.xml Float 0.54
Описание
Настраивает альфа-канал полупрозрачного черного фона, который показывается поверх фона с черными полосами по краям, когда для параметра R.integer.config_letterboxBackgroundType выбран вариант 3. Значения меньше 0 или больше или равные 1 игнорируются, и вместо них используется 0.0 (прозрачный).

Вариант использования или контекст
Эта функция не запущена из-за существующих проблем с производительностью. Производители устройств могут реализовать эту функцию самостоятельно, но в AOSP не будет исправляться никаких ошибок.
config_enableSelfKillRecoveryBetweenInternalDisplays frameworks/base/core/res/res/values/config.xml Bool false
Описание
Если задано значение true, то при перемещении между внутренними экранами логика восстановления с самозавершением не отключается.

Пример использования или контекст
В Android 17 и более поздних версиях процесс восстановления с самозавершением включается только при перемещении между экранами, в котором задействованы внешние мониторы. Однако этот процесс также эффективен для складных устройств с разной плотностью пикселей на внутреннем и внешнем экранах. Эта конфигурация включает процесс для таких устройств.

Досягаемость и позиционирование

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

Название Местоположение Тип По умолчанию
config_letterboxIsHorizontalReachabilityEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, включено ли горизонтальное перемещение для приложений с черными полосами в полноэкранном режиме.

Вариант использования
Перемещает приложение, ориентированное вертикально, влево или вправо для удобства доступа.
config_letterboxHorizontalPositionMultiplier frameworks/base/core/res/res/values/config.xml Float 0.5
Описание
Настраивает горизонтальное положение центра окна приложения с черными полосами.
0 соответствует левой части экрана, а 1 – правой.
Если указанное значение меньше 0 или больше 1, оно игнорируется. Для других поз используется центральная позиция (0.5). В режиме книги используется левое положение (0.0).

Сценарий использования или контекст
По умолчанию используется центр для приложения с вертикальной ориентацией и черными полосами.
config_letterboxIsVerticalReachabilityEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Позволяет настроить, будет ли вертикальное перепозиционирование для удобства использования включено для приложений с черными полосами в полноэкранном режиме.

Сценарий использования
Перемещает приложение, работающее в альбомной ориентации, вверх или вниз экрана, чтобы им было удобнее пользоваться.
config_letterboxVerticalPositionMultiplier frameworks/base/core/res/res/values/config.xml Float 0.0
Описание
Позволяет настроить положение по вертикали центра окна приложения в режиме леттербокс.
Значение 0 соответствует верхней части экрана, а 1 – нижней.
Если указанное значение меньше 0 или больше 1, оно игнорируется. В других режимах используется центральное положение (0.5). Для настольного режима используется верхняя позиция (0.0).

Пример использования или контекст
На устройствах с большим экраном для приложения с кашетированием в горизонтальной ориентации настроено выравнивание по центру.
config_letterboxIsAutomaticReachabilityInBookModeEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, включено ли автоматическое горизонтальное позиционирование для приложений с черными полосами в полноэкранном режиме.

Вариант использования или контекст
Позволяет перемещать приложение с черными полосами слева или справа, когда складное устройство находится в режиме книги.
config_letterboxBookModePositionMultiplier frameworks/base/core/res/res/values/config.xml Float 0.0
Описание
Позволяет настроить горизонтальное положение центра окна приложения с черными полосами по краям в режиме книги.
0 соответствует левой части экрана, а 1 – правой. Если указанное значение меньше 0 или больше 1, оно игнорируется и используется левая позиция (0.0).

Пример использования или контекст
Множитель, определяющий, насколько перемещается позиция приложения при изменении положения в режиме книги.
config_letterboxDefaultPositionForBookModeReachability frameworks/base/core/res/res/values/config.xml Integer 0
Описание
Настраивает горизонтальное положение по умолчанию для окна приложения в режиме леттербокс, когда включена функция доступности и приложение открыто в полноэкранном режиме в горизонтальной ориентации устройства и в режиме книги. Если функция "Досягаемость" включена, положение может меняться между левым, центральным и правым:
  • Option 0 – влево
  • Вариант 1 – по центру
  • Вариант 2 – справа
Если указанное значение выходит за пределы этого диапазона, используется вариант 0 (слева).

Вариант использования или контекст
Позиция по умолчанию, в которой приложение размещается в режиме книги.
config_letterboxTabletopModePositionMultiplier frameworks/base/core/res/res/values/config.xml Float 0.0
Описание
Позволяет настроить вертикальное положение центра окна приложения с черными полосами, когда устройство находится в режиме планшета.
Значение 0 соответствует верхней стороне экрана, а 1 – нижней. Если указанное значение меньше 0 или больше 1, оно игнорируется и используется верхняя позиция 0.0.

Пример использования или контекст
Множитель, определяющий, насколько перемещается позиция приложения на складном устройстве в настольном режиме.
config_letterboxDefaultPositionForTabletopModeReachability frameworks/base/core/res/res/values/config.xml Integer 0
Описание
Это правило задает положение по умолчанию по вертикали для окна приложения с черными полосами по краям, когда включена доступность, а приложение открыто в полноэкранном режиме на устройстве в портретной ориентации и настольном режиме. Если включена функция Reachability, положение может меняться между верхним, центральным и нижним. Эта конфигурация определяет настройки по умолчанию:
  • Вариант 0 – верхнее окно
  • Вариант 1 – по центру
  • Вариант 2 – внизу
Если указанное значение выходит за пределы этого диапазона, используется вариант 0 (вверху).

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

Настройки

В этом разделе перечислены все настройки конфигурации для изменения и включения параметров соотношения сторон в разделе Настройки > Приложения > Соотношение сторон.

Название Местоположение Тип По умолчанию
config_appCompatUserAppAspectRatioSettingsIsEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, включены ли параметры переопределения соотношения сторон для каждого приложения.

Вариант использования или контекст
Включает функцию Соотношение сторон в разделе Настройки > Приложения > Соотношение сторон.
config_appCompatUserAppAspectRatioFullscreenIsEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Позволяет настроить, включена ли в настройках соотношения сторон экрана пользователя возможность переопределения полноэкранного режима для каждого приложения.

Вариант использования или контекст
Включает параметр Полноэкранный режим в функции настроек соотношения сторон экрана.
Этот параметр игнорирует ограничения приложения на изменение размера, соотношение сторон и ориентацию.
config_userAspectRatioOverrideEntries packages/apps/Settings/res/values/config.xml string-array Все варианты включены по умолчанию.
Описание
Настраивает экран параметров соотношения сторон приложения и параметры переопределения соотношения сторон пользователем. Должен иметь ту же длину и порядок, что и config_userAspectRatioOverrideValues.
Если вы изменили значение, обновите логику резервного копирования и восстановления, чтобы выбирать ближайшее значение в UserAspectRatioBackupManager.java.

Вариант использования или контекст
Сопоставления для строк, которые показываются в настройках.
config_userAspectRatioOverrideValues packages/apps/Settings/res/values/config.xml integer-array По умолчанию используются все строки AOSP.
Описание
Настраивает экран параметров соотношения сторон приложения и параметры переопределения соотношения сторон пользователем. Должен иметь ту же длину и порядок, что и тег config_userAspectRatioOverrideEntries. Значения должны соответствовать PackageManager.UserMinAspectRatio.
Если вы изменили значение, обновите логику резервного копирования и восстановления, чтобы выбирать ближайшее значение в UserAspectRatioBackupManager.java.

Вариант использования или контекст
Сопоставления вариантов с серверной частью PackageManager.UserMinAspectRatio:
  • По умолчанию в приложении – 0
  • Разделение экрана – 1.
  • Соотношение сторон экрана: 2
  • 4:3 – 3
  • 16:9 – 4
  • 3:2 – 5
  • Полноэкранный режим – 6
Статические изображения для светлой темы packages/apps/Settings/res/drawable/ic_app_aspect_ratio_<option>.xml vector Горизонтальные объекты для складных устройств
Описание
Настраивает доступные объекты Drawable:


Вариант использования или контекст.
Статические изображения в светлых тонах под каждым вариантом в разделе Настройки > Информация о приложении > Соотношение сторон.
Статические графические объекты в тёмной теме packages/apps/Settings/res/drawable-night/ic_app_aspect_ratio_<option>.xml vector Горизонтальные объекты для складных устройств
Описание
Настраивает доступные объекты Drawable:


Вариант использования или контекст
Статические изображения в темной теме под каждым вариантом в разделе Настройки > Информация о приложении > Соотношение сторон.
Динамический графический объект
user_aspect_ratio_education.json
packages/apps/Settings/res/raw/user_aspect_ratio_education.json JSON Горизонтальный динамический объект для складного устройства
Описание
Настраивает иллюстрацию Lottie в UserAspectRatioAppsPageProvider.

Вариант использования или контекст
Анимация под списком приложений: Настройки > Приложения > Соотношение сторон.

Образование

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

Название Местоположение Тип По умолчанию
config_letterboxIsEducationEnabled frameworks/base/core/res/res/values/config.xml Bool false
Описание
Настраивает, включено ли обучение использованию рамок для полноэкранных приложений с рамками.

Вариант использования или контекст
На рисунке 1 показан вариант использования обучения использованию рамок для полноэкранных приложений.
config_letterboxIsRestartDialogEnabled frameworks/base/libs/WindowManager/Shell/res/values/config.xml Bool false
Описание
Настраивает, включено ли расширенное диалоговое окно перезапуска.

Вариант использования или контекст
Вариант использования расширенного диалогового окна перезапуска показан на рисунке 2.
config_letterboxIsReachabilityEducationEnabled frameworks/base/libs/WindowManager/Shell/res/values/config.xml Bool false
Описание
Настраивает, включено ли дополнительное обучение по вопросам доступности.

Вариант использования или контекст
Вариант использования обучения по вопросам доступности показан на рисунке 3.
config_isSizeCompatRestartButtonEnabled frameworks/base/libs/WindowManager/Shell/res/values/config.xml Bool true
Описание
Настраивает, включена ли кнопка перезапуска для совместимости с размером.

Вариант использования или контекст
Кнопка перезапуска для перезапуска конфигурации приложений, размер которых нельзя изменить, после изменения размера окна, например при переходе в режим разделенного экрана или повороте экрана.
На рисунке 4 показан пример кнопки перезапуска, которая подходит для разных размеров экрана.
config_letterboxRestartButtonHideTolerance frameworks/base/libs/WindowManager/Shell/res/values/config.xml Integer 100
Описание
Это правило позволяет настроить минимальный допуск для процента границ активности в задаче, чтобы скрыть кнопку перезапуска для совместимости размеров. Значения ниже 0 или выше 100 игнорируются.
100 – значение по умолчанию, при котором действие должно точно соответствовать задаче, чтобы кнопка перезапуска для совместимости размеров была скрыта. Значение 0 означает, что кнопка перезапуска для совместимости размеров всегда скрыта.

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

На изображениях ниже показаны примеры использования наложения для образовательных учреждений:

Обучение использованию черных полос для полноэкранных приложений

Рисунок 1. Обучение использованию черных полос для полноэкранных приложений

Пример диалогового окна с расширенными настройками перезапуска.

Рисунок 2. Расширенное диалоговое окно перезапуска

Пример обучения доступности.

Рисунок 3. Обучение по вопросам доступности.

Пример кнопки перезапуска для совместимости размеров.

Рисунок 4. Кнопка перезапуска совместимости размеров.