Android 10(API レベル 29)以降、Android システムは完全なジェスチャー ベースのナビゲーションをサポートしています。アプリにこの機能との互換性を持たせるには、アプリ デベロッパーが次の 2 つのことを行う必要があります。
- アプリのコンテンツを画面全体に拡大する(エッジ ツー エッジへの対応)。
- 競合するアプリ ジェスチャーに対処する。
さらに、Android 13(API レベル 33)では、複数年のリリースの一環として、スマートフォン、大画面、折りたたみ式デバイスなどの Android デバイス向けに予測型「戻る」ジェスチャーが導入されています。アプリ デベロッパーは、自分のアプリが予測型「戻る」ジェスチャーをサポートするように手順を実施できます。
エッジ ツー エッジのアプリ コンテンツを提供する
フローティング ナビゲーション バーによって利用できる追加の画面スペースを活用するには、アプリで特定の変更を設定する必要があります。
詳しくは、アプリ内でコンテンツをエッジ ツー エッジで表示するをご覧ください。
競合するアプリ ジェスチャーの処理
ジェスチャー ナビゲーション モデルは、アプリ デベロッパーが以前使用していたジェスチャーと競合する可能性があります。場合によっては、アプリのユーザー インターフェースの調整が必要になります。
「戻る」ジェスチャーと競合する
「戻る」の新しいシステム ジェスチャーは、画面の左端または右端から内側にスワイプすることです。これにより、その領域ではアプリのナビゲーション要素が妨げられる可能性があります。画面の左右端の要素の機能を維持するには、タップ入力を受け取る必要がある領域をシステムに示すことで、「戻る」ジェスチャーを選択的に無効にします。これを行うには、Android 10 で導入された View.setSystemGestureExclusionRects()
API に List<Rect>
を渡します。このメソッドは、androidx.core:core:1.1.0-dev01
以降の ViewCompat
でも使用できます。
次に例を示します。
Kotlin
var exclusionRects = listOf(rect1, rect2, rect3) fun onLayout( changedCanvas: Boolean, left: Int, top: Int, right: Int, bottom: Int) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects) } fun onDraw(canvas: Canvas) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects) }
Java
List<Rect> exclusionRects; public void onLayout( boolean changedCanvas, int left, int top, int right, int bottom) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects); } public void onDraw(Canvas canvas) { // Update rect bounds and the exclusionRects list setSystemGestureExclusionRects(exclusionRects); }
ホームまたはクイック スイッチのジェスチャーと競合する
ホームとクイック スイッチの新しいシステム ジェスチャーでは、以前はナビゲーション バーが表示されていた領域で、画面の下部にあるスワイプする必要があります。「戻る」ジェスチャーのように、アプリでこれらの操作を無効にすることはできません。
この問題を軽減するために、Android 10 では、タップ認識のしきい値をアプリに通知する WindowInsets.getMandatorySystemGestureInsets()
API が導入されています。
ビュー階層のないゲームやアプリ
ビュー階層のないゲームやその他のアプリでは、多くの場合、ユーザーがシステム ジェスチャー領域の近くをスワイプする必要があります。そのような場合、ゲームは Window.setSystemGestureExclusionRects()
を使用して、システム ジェスチャー用に予約された領域と重複する領域を除外できます。ゲームでは、ゲームプレイ中など、必要な場合にのみ、これらの領域を除外するようにする必要があります。
ユーザーがホーム ジェスチャー領域の近くをスワイプする必要があるゲームの場合、アプリは没入モードでのレイアウトをリクエストできます。これにより、ユーザーがゲームを操作している間はシステム ジェスチャーが無効になりますが、ユーザーは画面の下部からスワイプすることでシステム ジェスチャーを再度有効にすることができます。
予測型「戻る」ジェスチャーをサポートするようにアプリを更新する
Android 13(API レベル 33)では、スマートフォン、大画面、折りたたみ式デバイスなどの Android デバイス向けに予測型「戻る」ジェスチャーが導入されました。予測型「戻る」ジェスチャーは、複数年のリリースの一部です。この機能が完全に実装されると、ユーザーは「戻る」ジェスチャーのデスティネーションやその他の結果を、完了前にプレビューして、現在のビューで操作を続けるか、とどまるかを判断できるようになります。
詳しくは、予測型「戻る」ジェスチャーのサポートを追加するをご覧ください。
参考情報
ジェスチャー ナビゲーションについて詳しくは、以下をご覧ください。