Supporting Multi-Window

In Android 7.0 and higher, devices can display multiple apps simultaneously using multi-window. Android supports three multi-window configurations:

  • Split-screen is the default multi-window implementation, which provides two activity panes where users can place apps.
  • Freeform allows users to dynamically resize the activity panes and have more than two apps visible on their screen.
  • Picture-in-picture (PIP) allows Android devices to play video content in a small window while the user interacts with other apps.

Implementation

Multi-window support is enabled by default in Android 7.0 and higher. To disable it, set the config_supportsMultiWindow flag to false in your device's config.xml file.

Multi-window is disabled by default on all low-RAM devices (devices that declare ActivityManager.isLowRam()). Low-RAM devices ignore the value of the config_supportsMultiWindow flag.

Split-screen

Multi-window's default experience is split-screen mode, where the System UI is divided down the middle of the device in portrait or landscape. Users can resize the window by dragging the dividing line side to side or top to bottom, depending on the device orientation.

After enabling split-screen, device manufacturers can choose to enable freeform or PIP.

Android 8.0 and higher improves split-screen by compressing the launcher when the user taps Home. For implementation details, see Split-screen Interactions.

Freeform

After enabling multi-window mode with the config_supportsMultiWindow flag, device manufacturers can allow freeform windowing. This mode is most useful on larger devices, such as tablets.

To support freeform mode, enable the PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT system feature in /android/frameworks/base/core/java/android/content/pm/PackageManager.java and set config_freeformWindowManagement to true in config.xml.

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

Picture-in-picture

After enabling multi-window mode with the config_supportsMultiWindow flag, device manufacturers can support picture-in-picture, which allows users to watch video while browsing other activities. While this feature is targeted at Android Television devices, other device types may support this feature.

To support PIP, enable the PackageManager#FEATURE_PICTURE_IN_PICTURE system feature in /android/frameworks/base/core/java/android/content/pm/PackageManager.java.

For more PIP implementation details for devices running Android 8.0 and higher,see the Picture-in-picture page.

System UI

Support all standard System UIs according to Multi-window developer documentation.

Apps

To support multi-window mode for preloaded apps, consult the Android developer documentation.

Validation

To validate your implementation of multi-window, run the related CTS tests and follow the testing instructions for multi-window.

For Android 7.0, the tests are in /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts. In Android 8.0 and higher, the tests are in /platform/cts/tests/framework/base/activitymanager/src/android/server/am.