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

Android 10(API レベル 29)以降の Android システムでは、完全な ジェスチャーベースのナビゲーションをサポートしています。アプリ デベロッパーは、アプリがこの機能をサポートするように、次の 2 つの対応を行う必要があります:

  • アプリのコンテンツを画面全体に拡大する(エッジ ツー エッジへの対応)。
  • 競合するアプリ ジェスチャーに対処する。

また、Android 13(API レベル 33)では、スマートフォン、大画面、折りたたみ式デバイスなどの Android デバイス向けに 予測型「戻る」ジェスチャーが導入されました。これは複数年にわたる リリースの一部です。アプリ デベロッパーは、アプリが 予測型「戻る」ジェスチャーをサポートするように対応できます。

アプリのコンテンツをエッジ ツー エッジで表示する

フローティング ナビゲーション バーによって利用できるようになった画面スペースを利用するには、アプリで特定の変更を構成する必要があります。

詳しくは、アプリ内でコンテンツをエッジ ツー エッジで表示する をご覧ください。

競合するアプリ ジェスチャーに対処する

ジェスチャー ナビゲーション モデルでは、アプリ デベロッパーが以前に 使用していたジェスチャーと競合することがあります。そのため、アプリのユーザー インターフェースの調整が必要になることがあります。

「戻る」ジェスチャーとの競合

「戻る」の新しいシステム ジェスチャーは、画面の左端または 右端から内側へのスワイプです。このジェスチャーが、これらの領域内におけるアプリのナビゲーション要素を妨げる可能性があります 。画面の左端および右端でのナビゲーション要素の機能を維持するには、タップ入力を受け入れる必要がある領域をシステムに示すことで、「戻る」ジェスチャーを選択的に無効にする必要があります。これを行うには、Android 10 で導入されたView.setSystemGestureExclusionRects() API に List<Rect>を渡します。このメソッドは、ViewCompat 以降の androidx.core:core:1.1.0-dev01 でも使用できます。

次に例を示します。

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 デバイス向けに予測型「戻る」ジェスチャーが導入されました。予測型「戻る」 ジェスチャーは複数年にわたるリリースの一部です。完全に実装されると、この機能 により、ユーザーは「戻る」ジェスチャーを完全に完了する前に 、そのジェスチャーの移動先やその他の結果をプレビューして、続行するか現在のビューにとどまるかを判断できます 。

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

参考情報

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

ブログ投稿

動画