Jetpack Compose の PredictiveBackHandler コンポーザブルを使用すると、「戻る」操作をインターセプトしてその進行状況にアクセスできます。ユーザーの「戻る」ジェスチャーにリアルタイムで反応し、ユーザーがスワイプした距離に基づいてカスタム アニメーションや動作を作成できます。
PredictiveBackHandler を使用するには、androidx.activity:activity:1.6.0 以降を使用していることを確認してください。
PredictiveBackHandler は、Flow<BackEventCompat> を提供します。これは、「戻る」操作の進行状況を表すイベントを生成します。各イベントには、次のような情報が含まれています。
progress: 「戻る」操作の進行状況を示す 0 ~ 1 の浮動小数点値(0 = 操作開始、1 = 操作完了)。touchXとtouchY: タッチイベントの 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 throw e } }
例: ナビゲーション ドロワーと統合する
この例では、PredictiveBackHandler を使用してカスタムのアプリ内アニメーションを実装し、ナビゲーション
ドロワーをスムーズに操作する方法を示します。これは、JetLagged での「戻る」ジェスチャーに応じたものです。
この例では、PredictiveBackHandler を使用して次のことを行います。
- 「戻る」ジェスチャーの進行状況を追跡する。
- ジェスチャーの進行状況に基づいてドロワーの
translationXを更新する。 - ジェスチャーが完了またはキャンセルされたときに、
velocityTrackerを使用してジェスチャーの速度に基づいてドロワーをスムーズに開閉する。