Android アプリは、スマートフォン、タブレット、折りたたみ式デバイス、デスクトップ、自動車、テレビなど、さまざまなデバイスで動作するようになり、大画面のウィンドウ モード(分割画面やデスクトップ ウィンドウなど)も登場しています。そのため、デバイスの向きにかかわらず、あらゆる画面サイズやウィンドウ サイズに対応できる Android アプリを開発する必要があります。画面の向きやサイズ変更を制限するなどのパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。
向き、サイズ変更の可能性、アスペクト比の制限を無視する
Android 17 以降をターゲットとするアプリでは、最小幅が 600 dp を超えるディスプレイで、画面の向き、サイズ変更、アスペクト比の制限が適用されなくなります。アスペクト比やユーザーが希望する向きに関係なく、アプリはディスプレイ ウィンドウ全体に表示され、ピラーボックス表示は使用されません。
Android 17 では、Android 16 で提供されていた大画面デバイスの向きとサイズ変更の制限に関する一時的なデベロッパー オプトアウトが削除されます。
この変更により、新しい標準プラットフォームの動作が導入されます。Android は、アプリがさまざまな向き、ディスプレイ サイズ、アスペクト比に対応することを想定したモデルに移行しています。向きの固定やサイズ変更の制限などの制約は、アプリの適応性を妨げます。アプリをアダプティブにすることで、最適なユーザー エクスペリエンスを提供できます。
この動作は、アプリ互換性フレームワークを使用して UNIVERSAL_RESIZABLE_BY_DEFAULT 互換性フラグを有効にすることでもテストできます。
一般的な互換性を破る変更
向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響する可能性があります。特に、縦向きに固定された小さなレイアウト用に設計された要素に影響する可能性があります。たとえば、レイアウトが引き伸ばされたり、画面外のアニメーションやコンポーネントが表示されたりする問題が発生する可能性があります。アスペクト比や向きについて想定していることがあると、アプリで視覚的な問題が発生する可能性があります。こうした問題を回避してアプリの適応動作を改善する方法についてご確認ください。
横向きの折りたたみ式デバイスや、マルチ ウィンドウ、デスクトップ ウィンドウ、接続されたディスプレイなどのシナリオでアスペクト比を計算する場合に、カメラ プレビューが引き伸ばされたり、回転したり、切り取られたりすることがあります。この問題は、大画面デバイスや折りたたみ式デバイスでよく発生します。これは、アプリがカメラ機能(アスペクト比やセンサーの向きなど)とデバイス機能(デバイスの向きや自然な向きなど)の間に一定の関係があることを前提としているためです。詳しくは、カメラのプレビューの管理をご覧ください。
デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存されていない場合はユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。
実装の詳細
次のマニフェスト属性とランタイム API は、大画面デバイスの全画面モードとマルチウィンドウ モードでは無視されます。
screenOrientationresizableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
screenOrientation, setRequestedOrientation() と getRequestedOrientation() の次の値は無視されます。
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
ディスプレイのサイズ変更については、android:resizeableActivity="false",
android:minAspectRatio と android:maxAspectRatio は影響しません。
例外
Android 17 の画面の向き、サイズ変更、アスペクト比の制限は、次の状況では適用されません。
- ゲーム(
android:appCategoryフラグに基づく) - デバイスのアスペクト比設定でアプリのデフォルトの動作を明示的に選択しているユーザー
- 最小幅が
sw600dpより小さい画面