借助 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
在手势完成或取消时,根据手势速度平滑地打开或关闭抽屉。