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

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 より小さい画面