gpt4 book ai didi

android - 如何在 Jetpack Compose 中获取 onTouchEvent?

转载 作者:行者123 更新时间:2023-12-03 16:10:06 25 4
gpt4 key购买 nike

在正常情况下,我们可以有 onTouchEvent

    override fun onTouchEvent(event: MotionEvent?): Boolean {
when (event?.action) {
MotionEvent.ACTION_DOWN -> {}
MotionEvent.ACTION_MOVE -> {}
MotionEvent.ACTION_UP -> {}
else -> return false
}
invalidate()
return true
}
在 Jetpack Compose 中,我只能找到 tapGestureFilter在修饰符中,它仅从 ACTION_UP 中执行操作只要。
Modifier
.tapGestureFilter { Log.d("Track", "Tap ${it.x} | ${it.y}") }
.doubleTapGestureFilter { Log.d("Track", "DoubleTap ${it.x} | ${it.y}") }
有没有等价的 onTouchEvent Jetpack Compose?

最佳答案

我们有一个单独的 package为此,这非常有用。
有两个适合您的主要扩展功能:

  • pointerInput - docs
  • pointerInteropFilter - docs

  • 如果您想处理和处理我建议使用 pointerInteropFilter 的事件这是 View.onTouchEvent 的类似物.它与 modifier 一起使用:
    Column(modifier = Modifier.pointerInteropFilter {
    when (it.action) {
    MotionEvent.ACTION_DOWN -> {}
    MotionEvent.ACTION_MOVE -> {}
    MotionEvent.ACTION_UP -> {}
    else -> false
    }
    true
    })
    这将是 Compose 调整后的代码到您指定的 View.onTouchEvent样本。
    附言不要忘记 @ExperimentalPointerInput注解。

    关于android - 如何在 Jetpack Compose 中获取 onTouchEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64571945/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com