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 } }
範例:整合至導覽匣
本範例說明如何使用 PredictiveBackHandler
實作自訂的應用程式內動畫,以便在 JetLagged 中回應返回手勢,與導覽匣建立流暢的互動:
在本範例中,PredictiveBackHandler
用於:
- 追蹤返回手勢的進度。
- 根據手勢進度更新抽屜的
translationX
。 - 使用
velocityTracker
時,系統會根據手勢完成或取消時的手勢速度,流暢地開啟或關閉抽屜。