如何在拖动过程中使视图保持在用户手指的中心

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

我有一个光标图标,我希望在用户拖动它时使其保持在用户手指的中心,但由于触摸倾斜和各种其他原因,它不能通过简单地通过拖动更新视图的偏移来保持居中onDrag 中的金额。

我以为我可以计算触摸点的全局 X Y 并将其设置为该值,但奇怪的是,如果不做一些令人沮丧的事情(例如使用pointerInterop 修饰符),就很难在 Compose 中获取该值。

     onDrag = { change, dragAmount ->
                    change.consume()

                    params.x += dragAmount.x.toInt()
                    params.y += dragAmount.y.toInt()
                    wm.updateViewLayout(composeView, params)
                   
                }
android-jetpack-compose
1个回答
0
投票

问题并不完全清楚您在哪里设置阻力以及它与触摸倾斜的关系。如果您发布更多详细信息,这会很有帮助,但您可以通过

change: PointerInputChange
change.position
获取指针位置,返回光标或索引的偏移量。

将全球排名提高到 1.7 以上也很容易。您可以在 onGloballyPositioned/onPlaced 中使用

it.positionOnScreen()
获取它。

/**
 * The position of this layout on the device's screen.
 * Returns [Offset.Unspecified] if the conversion cannot be performed.
 */
fun LayoutCoordinates.positionOnScreen(): Offset = localToScreen(Offset.Zero)
© www.soinside.com 2019 - 2024. All rights reserved.