使用 Jetpack Compose 检测 Wear OS 上的滑动手势的当前机制

问题描述 投票:0回答:1

我正在尝试检测 Wear OS 上的滑动手势。 https://developer.android.com/jetpack/compose/touch-input/pointer-input/drag-swipe-fling 上的文档指出

注意:swipeable API 已被 Jetpack Compose 1.6.0-alpha01 中 Foundation 的anchoredDraggable API 取代。请阅读迁移指南了解更多信息。

我还没有找到一个有效的

anchoredDraggable
示例。看起来
anchoredDraggable
仍在进行中。在 Wear OS 上使用 Jetpack Compose 检测弹出手势的正确、当前且未弃用的方法是什么?

kotlin android-jetpack-compose wear-os
1个回答
0
投票

根据官方文档(您在问题中引用的文档),

AnchoredDraggable
支持 UI 组件上的某些滑动和滑动行为的首选方式。

您是正确的,因为相同的文档实际上并未显示如何实现对 fling 手势的支持的示例...

我从这个视频了解了fling。从链接中的时间戳开始的两个部分显示了如何从头开始构建所有内容。以下部分展示如何使用 AnchoredDraggable 来实现相同的效果。根据您到底想要做什么,您可能想要/必须自己进行手势检测,在这种情况下,您的代码最终将看起来像这样:

val translationX = remember {
    Animatable(0f)
}

val decay = rememberSplineBasedDecay<Float>()

ComposableToFling(
    modifier = Modifier
      .draggable(draggableState, Orientation.Horizontal,
        onDragStopped = { velocity ->
            val decayX = decay.calculateTargetValue(
                translationX.value,
                velocity
            )
            coroutineScope.launch {
                // Do something with the fling gesture
            }
        }
      )
)

请注意,我故意省略了上面代码片段中的代码,以突出显示快速手势检测。您将需要添加一些额外的部分(全部在视频中)才能编译和运行。

© www.soinside.com 2019 - 2024. All rights reserved.