エッジ ツー エッジのデザイン

エッジ ツー エッジアプリは、システムバーの下に UI を描画することで、画面全体を活用します。

図 1. 左。エッジ ツー エッジではないアプリ。そうです。エッジ ツー エッジのアプリ。

要点

  • システムバーの下に背景とスクロール コンテンツを描画して、エッジ ツー エッジのエクスペリエンスを実現します。
  • システム インセットの下にタップ操作やドラッグ ターゲットを追加しないでください。これらは、エッジ ツー エッジやジェスチャー ナビゲーションと競合します。
図 2. ジェスチャー インセットが緑色でハイライト表示されたアプリ。

システムバーの背後にコンテンツを描画する

エッジ ツー エッジ機能を使用すると、システムバーの下に UI を描画して、没入感のあるエクスペリエンスを実現できます。

アプリは、インセットに対応することで、コンテンツの重複に対処できます。インセットは、システムバーやディスプレイ カットアウトなどの実機機能との重複を避けるために、アプリのコンテンツにパディングを適用する必要がある量を示します。Compose と Views でエッジ ツー エッジをサポートし、インセットを処理する方法について確認する。

エッジ ツー エッジのユースケースを設計する際は、次のタイプのインセットに注意してください。

  • システムバー インセットは、タップ可能で、システムバーによって視覚的に隠されない UI に適用されます。
  • システム ジェスチャー インセットは、OS が使用するジェスチャー ナビゲーション領域に適用され、アプリよりも優先されます。
  • ディスプレイ カットアウト インセットは、カメラ カットアウトなど、ディスプレイの表面に広がるデバイス領域に適用されます。

ステータスバーに関する考慮事項

システムバーの基本的な設計ガイダンスについては、Android のシステムバーをご覧ください。次のセクションでは、ステータス バーに関するその他の考慮事項について説明します。

コンテンツをスクロールする

トップ アプリバーは、スクロール中に折りたたまれるようにします。マテリアル 3 の TopAppBar を折りたたむ方法を学習します。マテリアル 3 では、小さい上部アプリバーをステータスバーの高さまで折りたたんだり、画面外にスクロールしたりできます。中規模および大規模なトップ アプリバーは、より小さなアプリバーに折りたたむことができます。[マテリアルのガイダンス][10] をご覧ください。

アプリバーが固定されている場合は、小さなトップ アプリバーをステータスバーの高さまで折りたたみます。
小さなトップ アプリバーが固定されていない場合は、一致する背景色のカラー グラデーションを追加します。

UI が下にスクロールされるときにステータスバーが半透明になるようにして、ステータスバーのアイコンが乱雑に見えないようにする必要があります。これを行うには、まず、LazyColumn または RecyclerView のドキュメントの手順に沿って、スクロール可能な UI をエッジ ツー エッジにします。次に、以下のいずれかを行って、システムバーを半透明にします。

  • 該当する場合は、スクロール時に Material 3 TopAppBar の自動保護に依存します。
  • カスタム グラデーション コンポーザブルを作成するか、ビューに GradientProtection を使用します。Compose でこれを行う方法については、システムバーの保護をご覧ください。
図 3. ジェスチャー インセットが緑色でハイライト表示されたアプリ。

アダプティブ レイアウトの場合は、背景色が異なるペインに個別の保護を適用してください。

各ペインの背景と一致しないグラデーション保護がある
各ペインの背景に合わせたグラデーション保護を適用します。

同様に、ナビゲーション ドロワーも、アプリの他の部分とは別に保護する必要があります。

図 4. ナビゲーション ドロワーの半透明のステータスバー。この画像では、ナビゲーション ドロワーのステータスバーは保護されていますが、アプリのステータスバーは保護されていません。

ステータスバーの保護を重ねないでください。たとえば、Material 3 の TopAppBar の組み込み保護とカスタム保護の両方を使用しないでください。

ナビゲーション バーの基本的な設計ガイダンスについては、Android システムバーをご覧ください。次のセクションでは、ナビゲーション バーに関するその他の考慮事項について説明します。

コンテンツをスクロールする

[BottomAppBar][10] は、scrollBehavior パラメータを使用してスクロール中に折りたたまれるようにします。

下部のアプリバーがアニメーションで消えるときに、3 ボタン ナビゲーションのシステムバーのスクリムを追加。
ジェスチャー ナビゲーションを透明なままにし、追加のスクリムを追加しない。

ただし、[NavigationBar]11 には scrollBehavior パラメータがないため、スクロール中も表示されたままになります。

ディスプレイ カットアウト

ディスプレイ カットアウトは UI の外観に影響する可能性があります。アプリは、UI の重要な部分がディスプレイ カットアウトの下に描画されないように、ディスプレイ カットアウトのインセットを処理する必要があります。

ディスプレイ カットアウトのインセットを使用して、重要な UI をインセットします。
重要な UI を画面の端に配置する。

ただし、次の画像に示すように、無地のアプリバーの背景はディスプレイ カットアウトに描画する必要があります。

図 5. 重要な UI がインセットされている間、単色のアプリバーの背景がディスプレイ カットアウトに描画されます。

横向きのカルーセルがディスプレイ カットアウトに描画されるようにします。

図 6. エッジツウエッジの水平ディスプレイ。カルーセルはディスプレイ カットアウトをスクロールします。

Compose でディスプレイ カットアウトをサポートする方法について確認する。

その他のガイダンス

一般に、背景と分割線もエッジ ツー エッジで描画する必要がありますが、テキストやボタンなどのコンテンツは、システム UI やハードウェア要素を避けるためにインセットする必要があります。