向きとサイズ変更の制限は無視される

Android アプリがさまざまなデバイス(スマートフォン、タブレット、折りたたみ式デバイス、デスクトップ、自動車、テレビなど)で実行されるようになり、大画面でのウィンドウ表示モード(分割画面、デスクトップ ウィンドウ表示など)も増えたため、デベロッパーは、デバイスの向きにかかわらず、あらゆる画面サイズやウィンドウ サイズに対応できる Android アプリを構築する必要があります。 向きやサイズ変更を制限するなどのパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。

向き、サイズ変更、アスペクト比の制限を無視する

Android 17(API レベル 37)以降をターゲットとするアプリの場合、最小幅が 600dp を超えるディスプレイでは、画面の向き、サイズ変更、アスペクト比の制限は適用されなくなります。アプリは、アスペクト比やユーザーが希望する向きにかかわらず、ディスプレイ ウィンドウ全体に表示され、ピラーボックス表示は使用されません。

Android 17 では、Android 16 で提供されていた大画面デバイスでの向きとサイズ変更の制限 に対するデベロッパーによる一時的なオプトアウトが削除されます。

この変更により、新しい標準プラットフォームの動作が導入されます。Android は、アプリがさまざまな向き、ディスプレイ サイズ、アスペクト比に対応することを前提とするモデルに移行しています。向きの固定やサイズ変更の制限などの制限は、アプリの適応性を妨げます。アプリを適応型にして、 可能な限り最高のユーザーエクスペリエンスを提供しましょう。

この動作は、アプリ互換性フレームワーク を使用して UNIVERSAL_RESIZABLE_BY_DEFAULT 互換性フラグを有効にすることでもテストできます。

一般的な重要な変更点

向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響が生じる可能性があります。特に、縦向きに固定された小さなレイアウト向けに設計された要素に影響が生じる可能性があります。たとえば、レイアウトが引き伸ばされたり、画面外にアニメーションやコンポーネントが表示されたりする問題が発生する可能性があります。アスペクト比や画面の向きについて想定していることが原因で、アプリに視覚的な問題が発生する可能性があります。 こうした問題を回避し、アプリの適応性を高める方法について詳しくは、こちらをご覧ください。

横向きの折りたたみ式デバイスや、マルチウィンドウ、デスクトップ ウィンドウ表示、接続されたディスプレイなどのシナリオでのアスペクト比の計算でよくある問題は、カメラ プレビューが引き伸ばされたり、回転したり、切り抜かれたりして表示されることです。この問題は、大画面デバイスや折りたたみ式デバイスでよく発生します。これは、アプリがカメラ機能(アスペクト比やセンサーの向きなど)とデバイス機能(デバイスの向きや自然な向きなど)の間に一定の関係があることを前提としているためです。詳しくは、カメラプレビューの管理をご覧ください。

デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存しないとユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。

実装の詳細

次のマニフェスト属性とランタイム API は、大画面デバイスの全画面モードとマルチウィンドウ モードで無視されます。

screenOrientation, setRequestedOrientation()getRequestedOrientation() の次の値は無視されます。

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

ディスプレイのサイズ変更については、android:resizeableActivity="false", android:minAspectRatioandroid:maxAspectRatioは無効です。

例外

Android 17 の画面の向き、サイズ変更、アスペクト比の制限は、次の場合には適用されません。

  • ゲーム(android:appCategory フラグに基づく)
  • ユーザーがデバイスのアスペクト比設定でアプリのデフォルトの動作を明示的に選択している場合
  • 最小幅が sw600dp より小さい画面