aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/tech/display/multi-window.html
blob: 421527f09d69371bf6b082a41180bf3708757ad3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<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>
<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>
&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>
<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>