Split Screen — 什么是分屏,屏幕上两个应用的模式

作者: IT Sectr 发布日期: 2026-06-08 阅读时间: 9 分钟

Split Screen — 是一种分屏模式,允许同时并排运行两个应用程序,共享可用空间。用户可以在窗口之间拖动分隔线、更改比例并快速切换每一半中的应用。根据 Android Developers (2025),Split Screen 是屏幕宽度从 600 dp 起的所有设备的强制兼容性计划的一部分,并且同时支持 Android 和 iPadOS

要点

  • Split Screen — 屏幕上两个应用,带可拖动分隔线。
  • Android Split Screen — 从 Android 7.0 开始支持,通过 Overview 激活。
  • iPad Split View — iPadOS 中的类似模式,具有三种分隔线位置。
  • 适配 — 应用程序必须处理窗口大小变化并保持状态。
  • 最小宽度 — Split Screen 中的应用程序窗口可以缩小到 220 dp。

什么是 Split Screen?

Split Screen — 是一种多任务模式,屏幕被分成两个功能区域,每个区域包含一个独立的应用程序。与 Slide Over 或 PiP(一个窗口浮动在另一个之上)不同,Split Screen 给予两个应用程序同等的地位——每个应用程序获得自己的一半屏幕。

该模式可在 Android(从 7.0 Nougat 开始)、iPadOS(从 iOS 9 开始)、Windows(Snap Assist)和一些 Linux 桌面环境中使用。在移动开发中,Split Screen 被认为是平板电脑和折叠设备的强制场景,多任务处理是平台的关键优势。

用户通过长按 Overview 中的应用程序图标(Android)或从 Dock 拖动(iPad)来激活 Split Screen。激活后,屏幕被分割,用户从最近列表或 Dock 中选择第二个应用程序。

Android 上的 Split Screen:工作原理

在 Android 中,Split Screen 通过 Window Manager 进行管理。当用户激活该模式时,系统会创建两个 StackView——每个 Activity 一个。窗口之间的分隔线由系统绘制,其最小厚度为 1 dp,但在具有 手势导航 的设备上可以增加。

每个应用程序通过 onConfigurationChanged 接收大小更改通知。如果 Activity 不处理此事件——它将被销毁并重新创建。对于视频和游戏来说,这很关键:重新创建 Activity 会重置播放位置或游戏状态。

窗口比例可以通过拖动分隔线来更改。Android 支持三种状态:50/50、70/30 和 30/70。用户还可以交换应用程序——如果不处理 configChanges,这将导致 Activity 重启。

iPadOS 上的 Split View:特点

Split View — 是 iPadOS 中 Split Screen 的实现。与 Android(屏幕总是从中心分割)不同,iPadOS 为用户提供了三种分隔线位置:50/50、25/75 和 75/25。该模式通过 Dock 或 App Exposé 激活。

在 iPadOS 中,Split View 中的应用程序可以最小化为 Slide Over——一个浮动窗口。这是 Apple 的独特功能:用户可以将其中一个窗口从 Split View 转换为 Slide Over,再转换回来,而不会丢失数据。开发人员必须支持所有三种模式:全屏、Split View 和 Slide Over

为了在 iOS 中支持 Split View,应用程序必须通过 Size Classes 和场景(UIScene)实现自适应布局。从 iOS 13 开始,Apple 要求应用程序正确处理多窗口模式——否则,系统可能会强制重启 iPad 上的 Activity。

处理配置变更

在进入和退出 Split Screen 时,会发生配置变更:窗口的宽度、高度和宽高比会改变。Android 的标准行为——重新创建 Activity(onDestroy + onCreate)。为避免这种情况,请在清单中指定 android:configChanges

重新创建 Activity 时会丢失 View 和 ViewModel 状态。使用 SavedStateHandle 保存 UI 状态或具有 Application 范围的 ViewModel。替代方案——onRetainNonConfigurationInstance() 用于复杂对象。

kotlin
@Override
fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    val isSplitScreen = isInMultiWindowMode()
    if (isSplitScreen) {
        adjustLayoutForSplitScreen()
    }
}

在 iPadOS 中,类似的机制——traitCollectionDidChange 或 viewWillTransitionToSize。开发人员接收新的容器大小,必须根据 Size Class 重新构建布局。

在代码中支持 Split Screen

在 Android 中,对 Split Screen 的支持始于在清单中设置 resizeableActivity 标志。之后,Activity 可以缩小到最小宽度 220 dp。如果应用程序不支持如此窄的屏幕——请在清单中指定 android:minWidth。

对于 iPad,开发人员只需支持 Size Classes 并使用 Auto Layout 或 SwiftUI。SwiftUI 在切换到 Split View 时会自动调整界面——例如,NavigationSplitView 在 stacked 和 side-by-side 模式之间切换。

建议在真实设备上或具有 multi-resizable window 设置的模拟器中测试 Split Screen。Android Emulator 允许通过 ADB 启动任意数量的窗口,并检查应用程序在不同比例下的行为。

平台适配机制最小宽度
AndroidresizeableActivity + configChanges220 dp
iPadOSSize Classes + UIScene320 pt (primary)

实现中的常见错误

第一个错误——忽略状态保存。在 Split Screen 中,Activity 可能随时在用户不干预的情况下被重新创建。如果数据只存储在局部变量中——它们将丢失。对屏幕数据使用 ViewModel,对关键状态使用 SavedStateHandle。

第二个错误——在窗口缩小时隐藏内容。一些开发者在宽度低于某个阈值时隐藏元素。正确的方法是——重新构建布局:在窄屏上只显示最重要的内容,而不是隐藏所有内容。Window Size Class 为此逻辑提供了现成的断点。

第三个错误——不处理 onWindowFocusChanged。在 Split Screen 中,焦点可以在不关闭应用程序的情况下在窗口之间切换。忽略此事件会导致视频播放器在用户只是看向相邻窗口时停止。

常见问题解答

如何通过编程在 Split Screen 中启动应用程序?

使用带有 FLAG_ACTIVITY_LAUNCH_ADJACENT 的 Intent。如果设备处于 Split Screen 模式,应用程序将在相邻窗口中打开。如果设备处于全屏模式——标志被忽略。

Activity 的生命周期在 Split Screen 中是否不同?

是的。Activity 保持可见但失去焦点——调用 onPause,但不调用 onStop。退出 Split Screen 时会调用 onMultiWindowModeChanged,然后是 onResume。

如何在 Split Screen 中检查窗口宽度?

使用 WindowManager.getCurrentWindowMetrics() 或 Jetpack WindowManager。不要使用 Display.getSize()——它返回整个屏幕,而不是应用程序的当前窗口。

Split Screen 是否支持折叠设备?

是的。在展开的设备上,Split Screen 通常是默认模式。Samsung Galaxy Z Fold 在横屏模式下提供同时显示三个应用的 Split Screen。

如何为特定 Activity 禁用 Split Screen?

为该 Activity 设置 android:resizeableActivity="false"。对于 API 24+,该标志禁止 Split Screen。在 Android 12L+ 上使用 android:minWidth 和 android:minHeight。

总结

  • Split Screen — 屏幕上两个应用的模式,在 Android 和 iPadOS 上可用。
  • Android — 通过 resizeableActivity + onConfigurationChanged 工作。
  • iPadOS — 具有三种分隔线位置的 Split View,可转换为 Slide Over。
  • 适配 — 通过 configChanges 或重新创建处理大小变化。
  • 状态保存 — ViewModel 和 SavedStateHandle 对 Split Screen 是必需的。
  • 测试 — Android 上最小宽度 220 dp,iPad 上 320 pt。
  • 结论 — Split Screen 是平板电脑和折叠设备的强制模式,需要处理生命周期和自适应布局。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读