エッジ ツー エッジアプリは、システムバーの下に UI を描画することで、画面全体を活用します。
要点
- システムバーの下に背景とスクロール コンテンツを描画して、エッジ ツー エッジのエクスペリエンスを実現します。
- システム インセットの下にタップ操作やドラッグ ターゲットを追加しないでください。これらは、エッジ ツー エッジやジェスチャー ナビゲーションと競合します。
システムバーの背後にコンテンツを描画する
エッジ ツー エッジ機能を使用すると、システムバーの下に UI を描画して、没入感のあるエクスペリエンスを実現できます。
アプリは、インセットに対応することで、コンテンツの重複に対処できます。インセットは、システムバーやディスプレイ カットアウトなどの実機機能との重複を避けるために、アプリのコンテンツにパディングを適用する必要がある量を示します。Compose と Views でエッジ ツー エッジをサポートし、インセットを処理する方法について確認する。
エッジ ツー エッジのユースケースを設計する際は、次のタイプのインセットに注意してください。
- システムバー インセットは、タップ可能で、システムバーによって視覚的に隠されない UI に適用されます。
- システム ジェスチャー インセットは、OS が使用するジェスチャー ナビゲーション領域に適用され、アプリよりも優先されます。
- ディスプレイ カットアウト インセットは、カメラ カットアウトなど、ディスプレイの表面に広がるデバイス領域に適用されます。
ステータスバーに関する考慮事項
システムバーの基本的な設計ガイダンスについては、Android のシステムバーをご覧ください。次のセクションでは、ステータス バーに関するその他の考慮事項について説明します。
コンテンツをスクロールする
トップ アプリバーは、スクロール中に折りたたまれるようにします。マテリアル 3 の TopAppBar を折りたたむ方法を学習します。マテリアル 3 では、小さい上部アプリバーをステータスバーの高さまで折りたたんだり、画面外にスクロールしたりできます。中規模および大規模なトップ アプリバーは、より小さなアプリバーに折りたたむことができます。[マテリアルのガイダンス][10] をご覧ください。
すべきこと
すべきこと
UI が下にスクロールされるときにステータスバーが半透明になるようにして、ステータスバーのアイコンが乱雑に見えないようにする必要があります。これを行うには、まず、LazyColumn または RecyclerView のドキュメントの手順に沿って、スクロール可能な UI をエッジ ツー エッジにします。次に、以下のいずれかを行って、システムバーを半透明にします。
- 該当する場合は、スクロール時に Material 3 TopAppBar の自動保護に依存します。
- カスタム グラデーション コンポーザブルを作成するか、ビューに GradientProtection を使用します。Compose でこれを行う方法については、システムバーの保護をご覧ください。
アダプティブ レイアウトの場合は、背景色が異なるペインに個別の保護を適用してください。
禁止事項
すべきこと
同様に、ナビゲーション ドロワーも、アプリの他の部分とは別に保護する必要があります。
ステータスバーの保護を重ねないでください。たとえば、Material 3 の TopAppBar の組み込み保護とカスタム保護の両方を使用しないでください。
ナビゲーション バーに関する考慮事項
ナビゲーション バーの基本的な設計ガイダンスについては、Android システムバーをご覧ください。次のセクションでは、ナビゲーション バーに関するその他の考慮事項について説明します。
コンテンツをスクロールする
[BottomAppBar][10] は、scrollBehavior パラメータを使用してスクロール中に折りたたまれるようにします。
すべきこと
すべきこと
ただし、[NavigationBar]11 には scrollBehavior パラメータがないため、スクロール中も表示されたままになります。
ディスプレイ カットアウト
ディスプレイ カットアウトは UI の外観に影響する可能性があります。アプリは、UI の重要な部分がディスプレイ カットアウトの下に描画されないように、ディスプレイ カットアウトのインセットを処理する必要があります。
すべきこと
禁止事項
ただし、次の画像に示すように、無地のアプリバーの背景はディスプレイ カットアウトに描画する必要があります。
横向きのカルーセルがディスプレイ カットアウトに描画されるようにします。
Compose でディスプレイ カットアウトをサポートする方法について確認する。
その他のガイダンス
一般に、背景と分割線もエッジ ツー エッジで描画する必要がありますが、テキストやボタンなどのコンテンツは、システム UI やハードウェア要素を避けるためにインセットする必要があります。