| <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> |