アクセスの進捗状況を手動で確認する

Jetpack Compose の PredictiveBackHandler コンポーザブルを使用すると、戻るジェスチャーをインターセプトしてその進行状況にアクセスできます。ユーザーの「戻る」ジェスチャーにリアルタイムで反応し、ユーザーのスワイプ量に基づいてカスタム アニメーションや動作を作成できます。

PredictiveBackHandler を使用するには、androidx.activity:activity:1.6.0 以降を使用していることを確認してください。

PredictiveBackHandler は、戻るジェスチャーの進行状況を表すイベントを出力する Flow<BackEventCompat> を提供します。各イベントには次のような情報が含まれます。

  • progress: 戻るジェスチャーの進行状況を示す 0 ~ 1 の浮動小数点値(0 = ジェスチャーの開始、1 = ジェスチャーの完了)。
  • touchXtouchY: タッチイベントの X 座標と Y 座標。

次のスニペットは、PredictiveBackHandler の基本的な使用方法を示しています。

PredictiveBackHandler(true) { progress: Flow<BackEventCompat> ->
    // code for gesture back started
    try {
        progress.collect { backEvent ->
            // code for progress
            boxScale = 1F - (1F * backEvent.progress)
        }
        // code for completion
        boxScale = 0F
    } catch (e: CancellationException) {
        // code for cancellation
        boxScale = 1F
    }
}

例: ナビゲーション ドロワーと統合する

この例では、PredictiveBackHandler を使用してカスタムのアプリ内アニメーションを実装し、JetLagged で「戻る」ジェスチャーに応答してナビゲーション ドロワーをスムーズに操作する方法を示します。

図 5. 予測型「戻る」をサポートするナビゲーション ドロワー。

この例では、PredictiveBackHandler は次の目的で使用されます。

  • 戻るジェスチャーの進行状況を追跡します。
  • ジェスチャーの進行状況に基づいて、引き出しの translationX を更新します。
  • velocityTracker を使用して、ジェスチャーが完了またはキャンセルされたときのジェスチャーの速度に基づいて、引き出しをスムーズに開くまたは閉じます。