blob: 6b48eaeaa3328b9c0884e3a82a274220c4cf6d51 [file] [log] [blame]
<html devsite><head>
<title>支持多窗口模式</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>
在 Android 7.0 及更高版本中,用户可以借助新的平台功能(多窗口模式)在设备屏幕上同时显示多个应用。除了默认实施的多窗口模式外,Android 还支持几个多窗口模式的变体:</p>
<ul>
<li><strong>分屏</strong>是多窗口模式的基本实现方式,可为用户提供两个活动窗格来放置应用。
</li><li><strong>自由窗口</strong>允许用户动态调整活动窗格大小,并在屏幕上显示两个以上的应用。
</li><li><strong>画中画 (PIP) </strong>允许用户在与其他 Android 设备应用交互的同时,继续在小窗口中播放视频内容。</li>
</ul>
<p>
为了实现多窗口模式功能,设备制造商在其设备的配置文件中设置了一个标记,用于启用或禁用多窗口模式支持。
</p>
<h2 id="implementation">实现</h2>
<p>
Android 7.0 及更高版本中会默认启用多窗口模式支持。要停用该功能,请在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml">config.xml</a> 文件中将 <code>config_supportsMultiWindow</code> 标记设为 false。
</p>
<p>
对于声明 <code>ActivityManager.isLowRam()</code> 的设备,不论 <code>config_supportsMultiWindow</code> 标记为何值,都会禁用多窗口模式。
</p>
<h3 id="split-screen">分屏</h3>
<p>
默认的多窗口模式体验是分屏模式,其中系统界面会从设备中间直接划分成两个横向或纵向屏幕。用户可以根据设备的屏幕方向左右或上下拖动分界线来调整窗口大小。
</p>
<p>
然后,设备制造商可以选择是否要启用“自由窗口”或“画中画”模式。
</p>
<p>
Android 8.0 改进了分屏功能,当用户点按<strong>主屏幕</strong>时,系统会压缩启动器。如需实现方面的详细信息,请参阅<a href="/devices/tech/display/split-screen">分屏交互</a>
</p>
<h3 id="freeform">自由窗口</h3>
<p>
通过标记 <code>config_supportsMultiWindow</code> 启用标准多窗口模式后,设备制造商可以选择性允许启用自由窗口。此模式对于较大设备(如平板电脑)的制造商最为有用。
</p>
<p>
要支持自由窗口模式,请启用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/pm/PackageManager.java">/android/frameworks/base/core/java/android/content/pm/PackageManager.java</a> 中的 PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT
系统功能,并在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml">config.xml</a> 中将 <code>config_freeformWindowManagement</code> 设为 true。
</p>
<pre class="devsite-click-to-copy">
&lt;bool name="config_freeformWindowManagement"&gt;true&lt;/bool&gt;
</pre>
<h3 id="picture-in-picture">画中画</h3>
<p>
通过 <code>config_supportsMultiWindow</code> 标记启用标准多窗口模式后,设备制造商可以支持<a href="https://developer.android.com/training/tv/playback/picture-in-picture.html">画中画</a>功能,以允许用户在浏览其他活动时继续观看视频。虽然此功能主要针对 Android 电视设备,但其他设备类型也可能支持此功能。
</p>
<p>
要支持画中画功能,请启用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/pm/PackageManager.java">/android/frameworks/base/core/java/android/content/pm/PackageManager.java</a> 中的 PackageManager#FEATURE_PICTURE_IN_PICTURE 系统功能。
</p>
<p>
如需针对运行 Android 8.0 及更高版本的设备实现 PIP 的更多详细信息,请参阅<a href="/devices/tech/display/pip">画中画</a>页面。
</p>
<h3 id="system-ui">系统界面</h3>
<p><a href="https://developer.android.com/guide/topics/ui/multi-window.html#testing">https://developer.android.com/guide/topics/ui/multi-window.html#testing</a> 中所述,该功能支持所有标准系统界面。
</p>
<h3 id="applications">应用</h3>
<p>
要在预加载应用中提供多窗口模式支持,请参阅 <a href="https://developer.android.com/guide/topics/ui/multi-window.html">Android 开发人员文档</a>
</p>
<h2 id="validation">验证</h2>
<p>
要验证多窗口模式的实现,设备制造商应运行 <a href="https://android.googlesource.com/platform/cts/+/master/hostsidetests/services/activitymanager/src/android/server/cts">CTS 测试</a>,并按照<a href="https://developer.android.com/guide/topics/ui/multi-window.html#testing">多窗口模式测试说明</a>进行操作。
</p>
</body></html>