blob: 3aa2c126996ac73ca377e7280cc4112ec48e81c3 [file] [log] [blame]
<html devsite>
<head>
<title>Split-Screen Interactions</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>
In Android 7.0 and later, users can have multiple apps simultaneously displayed
on their device screen with the platform feature <a
href="/devices/tech/display/multi-window">multi-window</a>.
The default mode is split-screen, which provides two activity panes for users to
place apps.
</p>
<p>
Android 8.0 improves split-screen by refining the feature and adding more
functionality to it. In the default implementation, if a user taps
<strong>Home</strong> after entering split-screen, the top pane compresses and
the launcher resizes. This shows users that the top app is still open while
maintaining their launcher layout so they can find and launch apps from their
home screen.
</p>
<h2 id="examples-and-source">Examples and source</h2>
<p>
There is a reference implementation of this new functionality in the Launcher3
code in <code>/platform/packages/apps/Launcher3/</code>
</p>
<p>
These Change IDs are related to implementing split-screen in Launcher3, and can
act as a reference for device manufacturers who want to make similar updates to
their launchers.
</p>
<ul>
<li>Change-Id: <code>I48e5cb3bd15e70627d9bf007d93bc731612fba2e</code></li>
<li>Change-Id: <code>I86753bab5b24aafc417e0f77d8c471fc4c0dc7f0</code></li>
<li>Change-Id: <code>Id6557d070edb664aa1f4851de7abf494cf8a0677</code></li>
<li>Change-Id: <code>Icdaf73ecd89a30e57fe7f405292d793f2d6a3ee8</code></li>
<li>Change-Id: <code>Ie50279f4edb94812120dea492aefa4f18218162f</code></li>
<li>Change-Id: <code>I6f9ee7be12d3266f021796576c771f86f6120246</code></li>
<li>Change-Id: <code>I106fe12041565a090047f146a07d4bc80a074b4a</code></li>
<li>Change-Id: <code>Ibb49c56aab29d1223a0ab36476a32d565566eb25</code></li>
<li>Change-Id: <code>Id60c793730d982277c9d91860e9fb0e6a0df7d38</code></li>
<li>Change-Id: <code>I9d358e74ab403989929dee87542d3dde78c2f229</code></li>
<li>Change-Id: <code>I925d5ac9d29439c5d61cf089e7784065a8cb5ebd</code></li>
<li>Change-Id: <code>I776c6f710e081645cff891487022cf787869ee3f</code></li>
<li>Change-Id: <code>I2d17c89db2eb8d60b3393c2abc3b026e5574085d</code></li>
<li>Change-Id: <code>Id6ee68826c4f3cc579880540812fd8ed834f8267</code></li>
</ul>
<h2 id="example-ux">Example UX</h2>
<p>
Here are example screens that show the user experience for the default
implementation of this feature.
</p>
<p><img src="/devices/tech/display/images/split-screen-example-ux.png"
alt="Example screens for launcher resizing behavior" />
</p>
<p class="img-caption"><strong>Figure 1</strong>. Example screens for launcher
resizing in split-screen mode.
</p>
<h2 id="implementation">Implementation</h2>
<p>
While Android 8.0 provides a reference implementation for this update to
split-screen, it's up to device manufacturers to determine their implementations
in their launchers. To support this feature:
</p>
<ul>
<li>Implement (or have an existing implementation of) multi-window that follows
the Android Compatibility Definition Document (CDD) <a
href="/compatibility/android-cdd#3814-multi-windows">requirements
for multi-window</a>.</li>
<li>Make the launcher resizable. The reference implementation in Launcher3
removes app names as the screen gets smaller, but implementations may vary
depending on how the launcher compresses, especially if there is custom launcher
code.</li>
<li>Set the minimum specified height in the launcher manifest. To do this,
adjust <code>task_height_of_minimized_mode</code> value in:
<code>frameworks/base/core/res/res/values/dimens.xml</code></li>
</ul>
<h2 id="testing">Testing</h2>
<p>
Use manual testing to ensure your implementation is working correctly.
</p>
<ol>
<li>Enter split-screen.</li>
<li>Press <strong>Home</strong>.</li>
<li>Observe resizable launcher.</li>
</ol>
<p>
Ensure that the launcher resizes correctly in all device orientations that it
supports.
</p>
</body>
</html>