Поддержка нескольких окон

В Android 7.0 и выше устройства могут отображать несколько приложений одновременно с помощью многооконного режима. Android поддерживает три многооконной конфигурации:

  • Freeform позволяет пользователям динамически изменять размер панелей активности и отображать на экране более двух приложений.
  • Разделенный экран — это стандартная реализация многооконного режима, которая предоставляет две панели действий, на которых пользователи могут размещать приложения.
  • Функция «картинка в картинке» (PIP) позволяет устройствам Android воспроизводить видеоконтент в небольшом окне, пока пользователь взаимодействует с другими приложениями.

Выполнение

Поддержка многооконного режима включена по умолчанию в Android 7.0 и выше. Чтобы отключить ее, установите флаг config_supportsMultiWindow на false в файле config.xml вашего устройства.

Многооконный режим отключен по умолчанию на всех устройствах с малым объемом оперативной памяти (устройствах, которые объявляют ActivityManager.isLowRam() ). Устройства с малым объемом оперативной памяти игнорируют значение флага config_supportsMultiWindow .

Свободная форма

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

Для поддержки режима свободной формы включите системную функцию PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT в /android/frameworks/base/core/java/android/content/pm/PackageManager.java и установите для config_freeformWindowManagement значение true в config.xml .

    <bool name="config_freeformWindowManagement">true</bool>
    

В Android 16 OEM-производители могут поддерживать оконный режим рабочего стола на своих устройствах для произвольной конфигурации нескольких окон с помощью параметра «Включить оконный режим рабочего стола» .

Включить оконный режим рабочего стола

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

  • Убедитесь, что ваше устройство поддерживает окна свободной формы .
  • Установите флаг наложения конфигурации config_isDesktopModeSupported в true в config.xml :
        <bool name="config_isDesktopModeSupported">true</bool>
        
  • Чтобы включить свободное оконное отображение на внутреннем дисплее вашего устройства, установите флаг наложения конфигурации config_canInternalDisplayHostDesktops в true в config.xml . Этот флаг игнорируется, если config_isDesktopModeSupported имеет false :
          <bool name="config_canInternalDisplayHostDesktops">true</bool>
          
Включить ограничения задач

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

  1. Включить управление окнами рабочего стола .
  2. Установите флаг наложения конфигурации config_maxDesktopWindowingActiveTasks в config.xml на максимальное количество поддерживаемых задач. Для поддержки неограниченного количества задач установите флаг на значение по умолчанию 0 :
            <bool name="config_maxDesktopWindowingActiveTasks">4</integer>
            

Разделенный экран

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

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

Android 8.0 и выше улучшает разделение экрана, сжимая лаунчер, когда пользователь нажимает Домой . Подробности реализации см. в разделе Взаимодействие с разделением экрана .

Картинка в картинке

После включения многооконного режима с помощью флага config_supportsMultiWindow производители устройств могут поддерживать функцию «картинка в картинке» , которая позволяет пользователям смотреть видео, одновременно занимаясь другими делами. Хотя эта функция ориентирована на устройства Android Television, другие типы устройств могут ее поддерживать.

Для поддержки PIP включите системную функцию PackageManager#FEATURE_PICTURE_IN_PICTURE в /android/frameworks/base/core/java/android/content/pm/PackageManager.java .

Более подробную информацию о реализации PIP для устройств под управлением Android 8.0 и выше можно найти на странице «Картинка в картинке» .

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

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

Приложения

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

Проверка

Чтобы проверить реализацию многооконного режима, запустите соответствующие тесты CTS и следуйте инструкциям по тестированию для многооконного режима .

Android-версия тест CTS
7.0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
10.0 и выше /platform/cts/tests/framework/base/windowmanager/src/android/server/wm