支持多窗口

在 Android 7.0 及更高版本中,设备可以使用多窗口同时显示多个应用。Android 支持三种多窗口配置

  • 分屏是默认的多窗口实现,它提供两个活动窗格,用户可以在其中放置应用。
  • 自由窗口允许用户动态调整活动窗格的大小,并在屏幕上显示两个以上的应用。
  • 画中画 (PIP) 允许 Android 设备在小窗口中播放视频内容,同时用户可以与其他应用互动。

实现

默认情况下,Android 7.0 及更高版本中已启用多窗口支持。要停用此功能,请在设备的 config.xml 文件中将 config_supportsMultiWindow 标志设置为 false

在所有低 RAM 设备(声明 ActivityManager.isLowRam() 的设备)上,默认情况下会停用多窗口。低 RAM 设备会忽略 config_supportsMultiWindow 标志的值。

分屏

多窗口的默认体验是分屏模式,在该模式下,系统界面在纵向或横向模式下沿设备中间线分隔。用户可以通过左右或上下拖动分隔线来调整窗口大小,具体取决于设备方向。

启用分屏后,设备制造商可以选择启用自由窗口或 PIP。

Android 8.0 及更高版本改进了分屏功能,当用户点按主屏幕时,启动器会压缩。如需了解实现详情,请参阅分屏互动

自由窗口

通过 config_supportsMultiWindow 标志启用多窗口模式后,设备制造商可以允许自由窗口模式。此模式在平板电脑等较大设备上最有用。

要支持自由窗口模式,请在 /android/frameworks/base/core/java/android/content/pm/PackageManager.java 中启用 PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT 系统功能,并在 config.xml 中将 config_freeformWindowManagement 设置为 true

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

画中画

通过 config_supportsMultiWindow 标志启用多窗口模式后,设备制造商可以支持画中画,这允许用户在浏览其他活动时观看视频。虽然此功能的目标是 Android 电视设备,但其他设备类型也可能支持此功能。

要支持 PIP,请在 /android/frameworks/base/core/java/android/content/pm/PackageManager.java 中启用 PackageManager#FEATURE_PICTURE_IN_PICTURE 系统功能。

如需详细了解在运行 Android 8.0 及更高版本的设备上实现 PIP 的信息,请参阅画中画页面。

系统界面

根据多窗口开发者文档,支持所有标准系统界面。

应用

要为预加载的应用支持多窗口模式,请查阅Android 开发者文档

验证

要验证多窗口的实现,请运行相关的 CTS 测试,并按照多窗口测试说明进行操作。

对于 Android 7.0,测试位于 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts 中。在 Android 8.0 及更高版本中,测试位于 /platform/cts/tests/framework/base/activitymanager/src/android/server/am 中。