マルチウィンドウをサポートする

Android 7.0 以降のデバイスでは、マルチウィンドウを使用して複数のアプリを同時に表示できます。Android は次の 3 つのマルチウィンドウ構成をサポートしています。

  • 分割画面は、デフォルトのマルチウィンドウの実装で、ユーザーが 2 つのアクティビティ ペインにアプリを配置できるようにします。
  • フリーフォームは、ユーザーが動的にアクティビティ ペインのサイズを変更し、2 つ以上のアプリを画面に表示できるようにします。
  • ピクチャー イン ピクチャー(PIP)により、Android デバイスは、ユーザーが他のアプリを操作する間に小さなウィンドウで動画コンテンツを再生できます。

実装

Android 7.0 以降では、マルチウィンドウはデフォルトでサポートされています。 無効にするには、デバイスの config.xml ファイルで config_supportsMultiWindow フラグを false に設定します。

すべての低 RAM デバイス(ActivityManager.isLowRam() を宣言するデバイス)で、マルチウィンドウはデフォルトで無効になっています。低 RAM デバイスは、config_supportsMultiWindow フラグの値を無視します。

分割画面

マルチウィンドウのデフォルトの設定は分割画面モードです。システム UI は、デバイスの中央で縦または横に分割されます。デバイスの向きに応じて、横の分割線または縦の分割線をドラッグすることでウィンドウのサイズを変更できます。

分割画面を有効にすると、デバイスのメーカーはフリーフォームまたは PIP を有効にできます。

Android 8.0 以降では、ユーザーが [ホーム] をタップしたときにランチャーを圧縮することで、分割画面を改善しています。実装の詳細については、分割画面の操作をご覧ください。

フリーフォーム

マルチウィンドウ モードを config_supportsMultiWindow フラグで有効にすると、デバイスのメーカーはフリーフォームのウィンドウ化を行えるようになります。このモードは、タブレットなどの大型のデバイスで特に便利です。

フリーフォーム モードをサポートするには、/android/frameworks/base/core/java/android/content/pm/PackageManager.javaPackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT のシステム機能を有効にして、config.xml.config_freeformWindowManagementtrue に設定します。

    <bool name="config_freeformWindowManagement">true</bool>
    

ピクチャー イン ピクチャー

マルチスクリーン モードを config_supportsMultiWindow フラグで有効にすると、デバイスのメーカーはピクチャー イン ピクチャーをサポートできます。これにより、ユーザーは動画を視聴しながら、他のアクティビティをブラウジングできるようになります。この機能は Android TV デバイスを対象としていますが、他のタイプのデバイスでも使用できます。

PIP をサポートするには、/android/frameworks/base/core/java/android/content/pm/PackageManager.javaPackageManager#FEATURE_PICTURE_IN_PICTURE のシステム機能を有効化します。

Android 8.0 以降を搭載するデバイスの PIP 実装の詳細については、ピクチャー イン ピクチャーのページをご覧ください。

システム UI

マルチウィンドウ デベロッパー向けドキュメントに従って、すべての標準システム UI をサポートします。

アプリ

プリロードされたアプリのマルチウィンドウ モードをサポートするには、Android デベロッパー向けドキュメントをご覧ください。

検証

マルチウィンドウの実装を検証するには、関連する CTS テストを実行し、マルチウィンドウのテスト手順に従います。

Android 7.0 の場合、テストは /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts にあります。Android 8.0 以降では、テストは /platform/cts/tests/framework/base/activitymanager/src/android/server/am にあります。