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

Android アプリは、スマートフォン、タブレット、折りたたみ式デバイス、Chromebook、自動車、テレビ、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 の変更の例外は次のとおりです。

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

  • ゲーム(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 でレイアウトの重複などの表示の問題が発生する可能性があります。

スマートフォン、折りたたみ式デバイス、タブレット、Chromebook、車載ディスプレイ、XR で最適なユーザー エクスペリエンスを提供するには、レスポンシブで適応性のあるアプリを作成します。

  • UI コンポーネントの拡大を避ける: 標準の縦向きのスマートフォン画面用に設計されたレイアウトは、他のアスペクト比に対応できない可能性があります。たとえば、ディスプレイの幅全体を埋める UI 要素は、横向きでは引き伸ばされて表示されます。伸びを防ぐために、コンポーネントに最大幅を追加します。

  • レイアウトのスクロールを有効にする: レイアウトがスクロールしない場合、横向きでは画面外に表示されるボタンなどの UI 要素にユーザーがアクセスできない可能性があります。アプリのレイアウトをスクロール可能にして、ディスプレイの高さに関係なくすべてのコンテンツにアクセスできるようにします。

  • 縦向きと横向きでカメラの互換性を確保する: カメラセンサーに対して特定のアスペクト比と向きを前提とするカメラ ビューファインダーのプレビューでは、非準拠のディスプレイでプレビューが引き伸ばされたり、反転したりする可能性があります。向きの変更に応じてビューファインダーが適切に回転することを確認します。ビューファインダーを有効にして、センサーのアスペクト比とは異なる UI アスペクト比に調整できるようにします。

  • ウィンドウ サイズの変更中に状態を保持する: 向きとアスペクト比の制限が解除されると、ユーザーがアプリの使用方法に応じてアプリ ウィンドウのサイズが頻繁に変更される可能性があります。たとえば、デバイスの回転、折りたたみ、展開、マルチウィンドウ モードまたはデスクトップ ウィンドウ モードでのアプリのサイズ変更などです。向きの変更やウィンドウのサイズ変更などの構成変更が行われると、アクティビティが再作成されます(デフォルト)。最適なユーザー エクスペリエンスを確保するには、構成の変更中にアプリの状態を保持して、アプリがデータ(フォーム入力など)を保持し、ユーザーがコンテキストを維持できるようにします。

  • ウィンドウ サイズクラスを使用する: デバイス固有のカスタマイズなしで、さまざまなウィンドウ サイズとアスペクト比をサポートします。ウィンドウ サイズが頻繁に変更されることを前提とします。ウィンドウ サイズクラスを使用してウィンドウのサイズを特徴付け、適切なアダプティブ レイアウトを適用します。

  • レスポンシブ レイアウトを作成する: ウィンドウ サイズクラス内で、レスポンシブ レイアウトはディスプレイ サイズの変化に適応し、常に最適なアプリ表示を作成します。

タイムライン

  • Android 16(2025): API レベル 36 をターゲットとするアプリの大画面デバイス(最小画面幅 600 dp 以上)では、すべての画面の向きとアスペクト比のサポートとアプリのサイズ変更がベースライン エクスペリエンスとなります。ただし、デベロッパーはオプトアウトできます。

  • 2026 年の Android リリース: API レベル 37 をターゲットとするアプリの大画面デバイス(最小画面幅 600 dp 以上)では、すべての画面の向きとアスペクト比のサポートと、アプリのサイズ変更がベースライン エクスペリエンスになります。デベロッパーはオプトアウトできません。

対象 API レベル 対象デバイス デベロッパーによるオプトアウトが許可されている
36(Android 16) 大画面のデバイス(最小画面幅 600 dp 以上)
37(予定) 大画面のデバイス(最小画面幅 600 dp 以上) ×

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

参考情報