Split Screenとは?画面に2つのアプリを表示するモード

著者: IT Sectr 公開日: 2026-06-08 読了時間: 9 分

Split Screenは画面を分割するモードで、2つのアプリを同時に並べて実行し、利用可能なスペースを分割します。ユーザーはウィンドウ間の分割線をドラッグして比率を変更し、各半分のアプリを素早く切り替えることができます。Android Developers (2025)によると、Split Screenは画面幅600dp以上のすべてのデバイスで必須の互換性プログラムの一部であり、AndroidとiPadOSの両方でサポートされています。

重要なポイント

  • Split Screen — ドラッグ可能な分割線で画面に2つのアプリを表示。
  • Android Split Screen — Android 7.0以降で動作、Overviewからアクティブ化。
  • iPad Split View — iPadOSの同様のモード、3つの分割位置をサポート。
  • 適応 — アプリはウィンドウサイズの変更を処理し、状態を保持する必要があります。
  • 最小幅 — Split Screenのアプリウィンドウは220dpまで縮小可能。

Split Screenとは?

Split Screenはマルチタスクモードで、画面が2つの機能領域に分割され、それぞれに独立したアプリが表示されます。一方のウィンドウがもう一方の上に浮かぶ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から2番目のアプリを選択します。

AndroidでのSplit Screen:仕組み

Androidでは、Split ScreenはWindow Managerを介して管理されます。ユーザーがモードをアクティブ化すると、システムは2つのStackViewを作成します。各Activityに1つずつです。ウィンドウ間の分割線はシステムによってレンダリングされ、最小の厚さは1dpですが、ジェスチャーナビゲーション搭載デバイスでは増加する可能性があります。

各アプリはonConfigurationChangedを介してサイズ変更の通知を受け取ります。Activityがこのイベントを処理しない場合、破棄されて再作成されます。ビデオやゲームではこれが重要です。Activityを再作成すると、再生位置やゲームの状態がリセットされます。

ウィンドウの比率は分割線をドラッグして変更できます。Androidは50/50、70/30、30/70の3つの状態をサポートしています。ユーザーはアプリを入れ替えることもでき、configChangesが処理されていない場合はActivityが再起動されます。

iPadOSのSplit View:特徴

Split ViewはiPadOSにおけるSplit Screenの実装です。画面分割が常に中央から始まるAndroidとは異なり、iPadOSはユーザーに50/50、25/75、75/25の3つの分割位置を提供します。モードはDockまたはApp Exposéを介してアクティブ化されます。

iPadOSでは、Split ViewのアプリをSlide Over(フローティングウィンドウ)に折りたたむことができます。これはAppleのユニークな機能で、ユーザーはデータを失うことなく、ウィンドウをSplit ViewからSlide Overに、またはその逆に変換できます。開発者は3つのモードすべてをサポートする必要があります。フルスクリーン、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の状態を失います。UIの状態を保存するにはSavedStateHandleまたは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は最小幅220dpまで縮小できます。アプリがそのような狭い画面をサポートしない場合は、マニフェストでandroid:minWidthを指定します。

iPadの場合、開発者はSize Classesをサポートし、Auto LayoutまたはSwiftUIを使用するだけで済みます。SwiftUIはSplit Viewへの移行時に自動的にインターフェースを適応させます。たとえば、NavigationSplitViewはスタックモードとサイドバイサイドモードを切り替えます。

実際のデバイスまたはマルチリサイズ可能ウィンドウ設定のエミュレーターでSplit Screenをテストすることをお勧めします。Android EmulatorはADBを介して任意の数のウィンドウを起動し、さまざまな比率でのアプリの動作を確認できます。

プラットフォーム適応メカニズム最小幅
AndroidresizeableActivity + configChanges220 dp
iPadOSSize Classes + UIScene320 pt(プライマリ)

実装時のよくある間違い

最初の間違いは状態保存を無視することです。Split Screenでは、Activityはユーザーの操作なしにいつでも再作成される可能性があります。データがローカル変数にのみ保存されている場合、失われます。画面データにはViewModelを、重要な状態にはSavedStateHandleを使用してください。

2番目の間違いは、ウィンドウが縮小したときにコンテンツを非表示にすることです。一部の開発者は、幅が特定のしきい値を下回ると要素を非表示にします。正しいアプローチはレイアウトを再構築することです。狭い画面では、すべてを非表示にするのではなく、最も重要なものだけを表示します。Window Size Classはこのロジックのための既製のブレークポイントを提供します。

3番目の間違いはonWindowFocusChangedを処理しないことです。Split Screenでは、フォーカスはアプリを閉じずにウィンドウ間で切り替わることがあります。このイベントを無視すると、ユーザーが隣のウィンドウを見ただけでビデオプレーヤーが停止します。

よくある質問

プログラムでSplit Screenでアプリを起動するには?

FLAG_ACTIVITY_LAUNCH_ADJACENTを含むIntentを使用します。デバイスがSplit Screenモードの場合、アプリは隣のウィンドウで開きます。デバイスがフルスクリーンモードの場合、フラグは無視されます。

Split ScreenでのActivityのライフサイクルは異なりますか?

はい。Activityは表示されたままですが、フォーカスを失います。onPauseは呼び出されますが、onStopは呼び出されません。Split Screenを終了すると、onMultiWindowModeChangedが呼び出され、次にonResumeが呼び出されます。

Split Screenでウィンドウの幅を確認するには?

WindowManager.getCurrentWindowMetrics()またはJetpack WindowManagerを使用します。Display.getSize()は使用しないでください。これは現在のアプリウィンドウではなく、全画面を返します。

Split Screenは折りたたみデバイスでサポートされていますか?

はい。展開されたデバイスでは、Split Screenがデフォルトモードになることがよくあります。Samsung Galaxy Z Foldは横向きモードで3つのアプリを同時に表示するSplit Screenを提供します。

特定のActivityでSplit Screenを無効にするには?

そのActivityにandroid:resizeableActivity="false"を設定します。API 24+の場合、このフラグはSplit Screenを無効にします。Android 12L+では、android:minWidthとandroid:minHeightを使用します。

まとめ

  • Split Screen — 画面に2つのアプリを表示するモード、AndroidとiPadOSで利用可能。
  • Android — resizeableActivity + onConfigurationChangedで動作。
  • iPadOS — 3つの分割位置を持つSplit View、Slide Overに変換可能。
  • 適応 — configChangesまたは再作成によるサイズ変更の処理。
  • 状態保存 — Split ScreenにはViewModelとSavedStateHandleが必須。
  • テスト — Androidの最小幅220dp、iPadの最小幅320pt。
  • 結論 — Split Screenはタブレットや折りたたみデバイスで必須のモードであり、ライフサイクル管理とアダプティブレイアウトが必要です。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください