在 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
中。