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
根據手勢速度順暢地開啟或關閉抽屜。