ジェスチャー ナビゲーションとの互換性を確保する

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 デバイス向けに予測型「戻る」ジェスチャーが導入されました。予測型「戻る」ジェスチャーは、数年にわたるリリースに含まれています。この機能を完全に実装すると、ユーザーは「戻る」ジェスチャーのデスティネーションやその他の結果を、完全に完了する前にプレビューして、現在のビューを続行するかそのままにするかを決定できます。

詳細については、予測型「戻る」ジェスチャーのサポートを追加するをご覧ください。

参考情報

ジェスチャー ナビゲーションについて詳しくは、以下をご覧ください。

ブログ投稿

動画