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

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

Отображать

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

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

Вариант использования или контекст
Экран игнорирует запрошенную ориентацию всех приложений, и приложение отображается с черными полосами по бокам .
Используется на всех устройствах с большими экранами и в операционной системе Android Automotive. Это значение по умолчанию для всех устройств с большими экранами, у которых smallestScreenWidthDp >= 600dp в Android 16 и выше.
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 .
Инструкции по реализации параметра SCALER_ROTATE_AND_CROP в HAL см. в файле metadata_definitions.xml .

Фон и пользовательский интерфейс

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

Имя Расположение Тип По умолчанию
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
Описание
Настраивает внешний вид углов фона в формате Letterbox:
  • 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
Описание
Настраивает прозрачность (альфа-канал) черного полупрозрачного экрана, отображаемого поверх фона обоев в формате Letterbox, если для R.integer.config_letterboxBackgroundType выбран вариант 3 Значения меньше 0 или больше или равные 1 игнорируются, и вместо них используется 0.0 (прозрачный).

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

Доступность и позиционирование

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

Имя Расположение Тип По умолчанию
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
Описание
Настраивает горизонтальное положение центра окна приложения с черными полосами по бокам (letterbox) в режиме просмотра книги.
0 соответствует левой стороне экрана, а 1 — правой. Если заданное значение меньше 0 или больше 1 , оно игнорируется, и используется левая позиция ( 0.0 ).

Вариант использования или контекст
Множитель, определяющий, насколько смещается положение приложения при изменении его положения в книжной ориентации.
config_letterboxDefaultPositionForBookModeReachability frameworks/base/core/res/res/values/config.xml Integer 0
Описание
Настраивает горизонтальное положение окна приложения по умолчанию, когда включена функция доступности и приложение находится в полноэкранном режиме в альбомной ориентации устройства и в положении «книжка». При включении функции доступности положение может изменяться между левым, центральным и правым положениями:
  • Вариант 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
Описание
Настраивает вертикальное положение окна приложения по умолчанию, когда включена функция доступности и приложение находится в полноэкранном режиме в портретной ориентации устройства и в положении за столом. При включении функции доступности положение может изменяться между верхним, центральным и нижним. Данная конфигурация определяет положение по умолчанию:
  • Вариант 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 Складные элементы ландшафтного дизайна
Описание
Настраивает доступные графические ресурсы:


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


Вариант использования или контекст
Статические изображения в темной тематике отображаются в каждом разделе «Настройки» > «Информация о приложении» > «Соотношение сторон» .
Динамический графический объект
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 означает, что кнопка перезапуска, отвечающая за совместимость размеров, всегда скрыта.

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

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

Обучение работе с полноэкранными приложениями с использованием технологии Letterbox

Рисунок 1. Обучение работе с приложениями в полноэкранном режиме с использованием технологии Letterbox.

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

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

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

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

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

Рисунок 4. Кнопка перезапуска, обеспечивающая совместимость по размеру.