アプリの向き、アスペクト比、サイズ変更

Android アプリは、スマートフォン、タブレット、折りたたみ式デバイス、ChromeOS デバイス、自動車、テレビ、XR など、あらゆる種類のデバイスで動作します。この多様な環境に対応するには、アプリがすべてのデバイスのフォーム ファクタとディスプレイ サイズをサポートする必要があります。

Android 16(API レベル 36)では、画面の向き、アスペクト比、サイズ変更に関するアプリの制限をオーバーライドすることで、アプリをさまざまなフォーム ファクタや表示サイズに対応させることができます。オーバーライドは、最小幅が 600 dp 以上のデバイスに適用され、次のものが定義されます。

  • タブレット
  • 大画面の折りたたみ式デバイスの内側ディスプレイ
  • デスクトップ ウィンドウ(すべてのフォーム ファクタ)

対象 API レベル 36 をターゲットとするアプリは、ディスプレイの最小幅が 600 dp 以上の場合、サイズ変更が可能で、マルチ ウィンドウ モードに移行できます(resizeableActivity="true" と同等)。

Android 16 より前の大画面デバイスを開いた状態ではレターボックス表示になるが、Android 16 をターゲットにすると全画面表示になる。アプリがレターボックス表示されている場合よりも、全画面表示されている場合の方が多くのニュース項目を表示する。
図 1.以前は大画面デバイスでレターボックス表示されていたデベロッパー ニュース フィード(左)は、Android 16 をターゲットとすると全画面表示されます(右)。

Android 16 では、デバイスの画面の向き、アスペクト比、表示サイズに関するユーザー設定を尊重することでユーザー エクスペリエンスを最適化する、アダプティブ アプリのデザインの一貫したモデルが適用されます。

変更

大画面で Android 16(API レベル 36)をターゲットとするアプリでは、次のマニフェスト属性と API は無視されます。

属性または API 無視される値
screenOrientation portraitlandscapereversePortraitreverseLandscapesensorPortraitsensorLandscapeuserPortraituserLandscape
resizeableActivity すべて
minAspectRatio すべて
maxAspectRatio すべて
setRequestedOrientation()

getRequestedOrientation()
portraitlandscapereversePortraitreverseLandscapesensorPortraitsensorLandscapeuserPortraituserLandscape

例外

Android 16 の変更には、次のような例外があります。

  • 画面幅が 600 dp 未満のディスプレイ(ほとんどのスマートフォン、フリップ式デバイス、大画面の折りたたみ式デバイスの外側ディスプレイ)

  • android:appCategory フラグに基づくゲーム

    Android App Bundle と Play アプリ署名を使用してゲームを公開すると、Google Play がフラグを管理し、App Bundle のメリットを自動的に提供できます。アプリ マニフェストの概要もご覧ください。

  • アスペクト比の設定でアプリのデフォルトの動作をユーザーが選択する

無効にする

API レベル 36 の動作をオプトアウトするには、PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY マニフェスト プロパティを宣言します。

特定のアクティビティをオプトアウトするには、<activity> 要素でプロパティを設定します。

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

アプリ全体でオプトアウトするには、<application> 要素でプロパティを設定します。

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

テスト

アプリが Android 16 の変更の影響を受けるかどうかをテストするには、Android Studio で Google Pixel Tablet と Google Pixel Fold シリーズのエミュレータを使用し、アプリのモジュール build.gradle ファイルで targetSdkPreview = "Baklava" を設定します。

または、 UNIVERSAL_RESIZABLE_BY_DEFAULT フラグを有効にして、テストデバイスでアプリの互換性フレームワークを使用します(互換性フレームワーク ツールをご覧ください)。

Espresso テスト フレームワークと Jetpack Compose テスト API を使用して、テストを自動化できます。

実装ガイド

デバイスの向き、アスペクト比、アプリのサイズ変更を制限するアプリでは、レイアウトの重複など、Android 16 で表示の問題が発生する可能性があります。スマートフォン、折りたたみ式デバイス、タブレット、ChromeOS デバイスなどで最適なユーザー エクスペリエンスを提供するには、レスポンシブでアダプティブなアプリを構築します。

準備状況チェックリスト

次のチェックリストを使用して、アプリが Android 16 の変更に対応していることを確認してください。

  • UI コンポーネントの拡大を避ける: 標準的な縦向きのスマートフォンの画面用に設計されたレイアウトは、他のアスペクト比に対応できない場合があります。たとえば、ディスプレイの幅全体を埋める UI 要素は、横向きにすると拡大されて表示されることがあります。拡大を避けるため、コンポーネントに最大幅を追加します。
  • レイアウトのスクロールを有効にする: レイアウトがスクロールしない場合、横向きで画面外にあるボタンやその他の UI 要素にユーザーがアクセスできない可能性があります。アプリのレイアウトのスクロールを有効にして、ディスプレイの高さに関係なくすべてのコンテンツにアクセスできることを確認します。
  • 縦向きと横向きでカメラの互換性を確認する: カメラセンサーに対して特定のアスペクト比と向きを想定したカメラ ビューファインダーのプレビューでは、非準拠のディスプレイでプレビューが拡大または反転する可能性があります。向きの変更に合わせてビューファインダーが適切に回転することを確認します。ビューファインダーがセンサーのアスペクト比とは異なる UI アスペクト比に合わせて調整されるようにします。
  • ウィンドウ サイズの変更時に状態を維持する: 画面の向きとアスペクト比の制限が削除されると、ユーザーがアプリを使用する方法(デバイスの回転、折りたたみ、展開、マルチウィンドウ モードまたはデスクトップ ウィンドウ モードでのアプリのサイズ変更など)に応じて、アプリのウィンドウ サイズが頻繁に変更される可能性があります。向きの変更やウィンドウのサイズ変更などの構成変更により、アクティビティが再作成されます(デフォルト)。最適なユーザー エクスペリエンスを提供するため、アプリの状態を維持して、アプリがデータ(フォーム入力など)を保持し、ユーザーがコンテキストを維持できるようにします。
  • ウィンドウ サイズクラスを使用する: デバイス固有のカスタマイズを行わずに、さまざまなウィンドウ サイズとアスペクト比をサポートします。ウィンドウ サイズは頻繁に変更されることを前提としてください。ウィンドウ サイズクラスを使用してウィンドウ のサイズを特徴付け、適切なアダプティブ レイアウトを適用します。
  • レスポンシブ レイアウトを構築する: ウィンドウ サイズクラス内で、レスポンシブ レイアウトはディスプレイのサイズの変更に合わせて調整され、常に 最適なアプリのプレゼンテーションが作成されます。

Compose でアダプティブ アプリを構築する方法については、 Jetpack Compose でアダプティブ アプリを作成するの Codelab をご覧ください。ビューを使用する アプリを移行する場合は、Compose の導入戦略をご覧ください。

タイムライン

  • Android 16(2025 年): すべての画面の向きとアスペクト比、アプリのサイズ変更のサポートは、対象 API レベル 36 をターゲットとするアプリの大画面デバイス(最小画面幅 600 dp 以上)のベースライン エクスペリエンスです。ただし、デベロッパーは無効にできます。
対象 API レベル 該当するデバイス デベロッパーによる無効化が許可されているか
36(Android 16) 大画面デバイス(最小画面幅 600 dp 以上) はい

特定の API レベルをターゲットとする期限は、アプリストアによって異なります。Google Play では、2026 年 8 月からアプリが対象 API レベル 36 をターゲットとする必要があります。

参考情報