適応型の推奨事項と禁止事項

アダプティブ アプリは、あらゆるサイズのディスプレイ(デバイス画面全体、サイズ変更可能)をサポートします。 マルチ ウィンドウ モードのウィンドウ、縦向きと横向き、折りたたまれている 折りたたみ式デバイスの 展開ディスプレイです

構成設定と API の短いリストを使用して、アダプティブ バナーの 。ただし、一部の古い設定や API はアダプティブ アプリに対応していません 避ける必要があります。

サイズ変更

アダプティブ アプリは、アプリのサイズ変更とマルチウィンドウ モードをサポートします。

<activity>resizeableActivity 属性と <application> マニフェスト要素はマルチウィンドウを有効または無効にします サポートしています。Android 12(API レベル 31)と 設定にかかわらず、大画面はマルチウィンドウ モードを 属性です。詳しくは、マルチウィンドウ モードをサポートするをご覧ください。

✓ 推奨

アプリで以下のマルチウィンドウ、マルチタスク シナリオに参加できるようにする ユーザーの生産性と満足度が向上します

アプリが API レベル 24 未満を対象にしている場合は、resizeableActivity="true" を設定します。 それを忘れないでください。Android 7.0(API)では、デフォルトで true です。 レベル 24)以上である必要があります。

🔒? すべきでないこと

どの API レベルにも resizeableActivity="false" を設定しないでください。アプリを除外しない パフォーマンスが向上します

向き

アダプティブ アプリは、ディスプレイにかかわらず縦向きと横向きをサポートします 指定することもできます

screenOrientation マニフェスト設定は、アクティビティの向きを制限しています。

✓ 推奨

アプリ マニフェストから screenOrientation 設定を削除します。

アプリの向きをロックしても、ウィンドウ サイズは変更できます。アプリは マルチウィンドウ モードになったとき、デバイスを折りたたんだり広げたりしたときにサイズ変更される サイズ変更の際にトリガーできますアプリはウィンドウの変更をサポートする必要があります screenOrientation 属性の設定に関係なくサイズが変更されます。

🔒? すべきでないこと

アクティビティの向きを制限しないでください。画面の向きがロックされるアプリがレターボックス表示される 大画面のデバイスや互換性のないウィンドウ サイズに対しても発生します。

レターボックス表示のアプリは、Google Play で見つかりにくくなる可能性があります。 タブレット、折りたたみ式デバイス、ChromeOS デバイスなどです

アスペクト比

画面やウィンドウのサイズが変化するにつれて、アスペクト比も変わります。縦長や 縦長、横長、横長、横長、横長、縦長などがありました。

minAspectRatio マニフェスト設定と maxAspectRatio マニフェスト設定により、 アプリのアスペクト比をハードコードされた値に合わせます。

✓ 推奨

相対的なサイズに関係なく、ディスプレイに合わせてアプリを調整します。

アプリから minAspectRatiomaxAspectRatio の設定を削除する 使用します。または、アプリのサイズ変更が可能で、アスペクト比が自動調整されるようにする (サイズ変更セクションをご覧ください)。

🔒? すべきでないこと

アプリの相対サイズを制御しようとしないでください。アプリが または、互換性のないアスペクト比のウィンドウが レターボックス表示になります。

Android 14(API レベル 34)以降では、ユーザーはアプリのアスペクト比をオーバーライドできます。 レターボックス表示のアプリを展開して、使用可能な表示領域全体に表示します。デバイス 互換モードをご覧ください。

対象期間

さまざまなディスプレイ サイズに合わせてレイアウトを最適化することが、 アダプティブ デザインです。アダプティブ アプリはデバイスではなくアプリのウィンドウ サイズにフォーカスします あります。アプリが全画面表示のときは、アプリ ウィンドウがデバイスの画面になります。

ウィンドウ サイズクラスは、ウィンドウ サイズクラスを決定して分類する体系的な方法を提供します。 アプリ ウィンドウのサイズ。ウィンドウに合わせてレイアウトを変更することでアプリを適応させる サイズクラスを変更する必要があります。

✓ 推奨

ウィンドウ サイズクラスに基づいてアプリのウィンドウ サイズを評価します。

ウィンドウ サイズクラスを特定するには、currentWindowAdaptiveInfo() を使用します。 Compose マテリアル 3 アダプティブ ライブラリの最上位関数です。詳細情報 詳しくは、アダプティブなアプリの作成をご覧ください。

🔒? すべきでないこと

ウィンドウ サイズクラスの定義と 構築されています。ウィンドウ サイズの計算に非推奨の API を使用しないでください。

サポート終了 API

古いプラットフォーム API では、アプリ ウィンドウが正しく測定されません。あるものは 一部はシステム デコレーションを除外しています。

✓ 推奨

WindowManager#getCurrentWindowMetrics()WindowMetrics#getBounds(): アプリ ウィンドウのサイズを取得します。使用 WindowMetrics#getDensity(): 表示密度を取得します。

🔒? すべきでないこと

ウィンドウ サイズの決定に、非推奨となった次の Display API を使用しないでください。

  • getSize(): Android 11(API レベル 30)でサポートが終了しました
  • getMetrics(): Android 11(API レベル 30)でサポートが終了しました
  • getRealSize(): Android 12(API レベル 31)でサポートが終了しました
  • getRealMetrics(): Android 12(API レベル 31)でサポートが終了しました

Compose

Jetpack Compose はアダプティブ UI 開発用に設計されています。XML もレイアウトも不要 リソース修飾子はありませんKotlin ベースのステートレスなコンポーザブルのみ UI を記述する ColumnRowBox などと修飾子 UI に動作を追加する offsetpaddingsize など あります。

✓ 推奨

Compose でビルドする。最新の機能やリリースをご確認ください。

🔒? すべきでないこと

時代遅れのテクノロジーに依存しないアプリを時代遅れにしない。

Compose Material 3 アダプティブ ライブラリ

Compose マテリアル 3 アダプティブ ライブラリには、以下の要件を満たすコンポーネントと API が用意されています。 アダプティブ アプリの開発を容易にします。

✓ 推奨

アプリをアダプティブにするには、次の API を使用します。

  • NavigationSuiteScaffold: ナビゲーション バーと ナビゲーション レールの移動。
  • ListDetailPaneScaffold: リストと詳細の正規レイアウトを実装します。 アプリのウィンドウ サイズに合わせてレイアウトを調整します。
  • SupportingPaneScaffold: サポートペインの正規版を実装します できます。
🔒? すべきでないこと

最初から作り直す必要はありません。デベロッパーの生産性向上の機会をお見逃しなく すべての Jetpack Compose ライブラリが 提供しています

レイアウト

ユーザーは、アプリが使用可能なディスプレイ領域を最大限活用することを期待しています。 管理の強化も行います。

アダプティブ アプリは、ディスプレイの変化、特に以下の状態に基づいてレイアウトを最適化する アプリ ウィンドウのサイズやデバイスの形状の変化。

✓ 推奨

ウィンドウ サイズの変化に応じて UI コンポーネントを変更し、利用可能な機能を活用する 表示されます。たとえば、Compact モデルで使用されているボトム ナビゲーション バーを入れ替えます。 中程度のウィンドウと拡大ウィンドウの垂直ナビゲーション レールのウィンドウ サイズ。 すべてのディスプレイからアクセスできるようにダイアログの位置を変更します。

コンテンツをペインに整理することで、次のようなマルチペイン レイアウトが可能になります。 動的コンテンツを表示するためのリスト詳細ペインと補助ペイン。

✓ すべきこと: デュアルペイン レイアウトで整理されたリスト アクティビティと詳細アクティビティ。
🔒? すべきでないこと

コンテンツ ペインを使用しない場合は、UI 要素を引き伸ばして埋めることはやめましょう 表示されます。長い行のテキストは読みにくくなります。ストレッチ ボタンのデザインが不適切です。Modifier.fillMaxWidth を使用する場合は、 これがすべてのディスプレイ サイズで適切な動作であると想定します。

🚫? 非推奨: 拡大ウィンドウいっぱいにレイアウトが引き伸ばされます。

入力デバイス

ユーザーはタッチ スクリーンだけを使ってアプリを操作しません。

アダプティブ アプリは、外付けキーボード、マウス、タッチペンに対応しており、 さまざまなフォーム ファクタでユーザーの生産性を高め、 多岐にわたります。

✓ 推奨

Android フレームワークの組み込み機能を活用して、 キーボードのタブ ナビゲーション、マウスまたはトラックパッドのクリック、選択、スクロール。公開する アプリのキーボード ショートカットをキーボード ショートカット ヘルパーに追加してください。

Jetpack のマテリアル 3 ライブラリを使用すると、 タッチペンを使用した TextField コンポーネント。

🔒? すべきでないこと

別の入力方法の使用を不可能にしないでください。ユーザー補助を導入しない サポートします。

概要

  • Compose とマテリアル 3 アダプティブ ライブラリを使用してアプリを作成する
  • ウィンドウ サイズクラスの基本レイアウト
  • マルチペイン レイアウトを作成する
  • アプリのサイズを変更できるようにする
  • アクティビティの向きをロックしない
  • アスペクト比を制限しない
  • タップ以外の入力をサポートする
  • 非推奨の API を避ける

ユーザーが期待していることを実践する: ユーザーが日々利用する多様なデバイスに合わせてアプリを最適化できます。

待たないでください。今すぐ始めましょう!