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
根据手势速度平滑地打开或关闭抽屉式菜单。