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

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

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

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

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:minAspectRatio と android:maxAspectRatio は効果がありません。

例外

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

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