手動存取進度

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 時,系統會根據手勢完成或取消時的手勢速度,流暢地開啟或關閉抽屜。