在正常情况下,我们可以有 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
}
Run Code Online (Sandbox Code Playgroud)
在 Jetpack Compose 中,我只能发现我们有tapGestureFilterin 修饰符,它只执行来自ACTION_UPonly的动作。
Modifier
.tapGestureFilter { Log.d("Track", "Tap ${it.x} | ${it.y}") }
.doubleTapGestureFilter { Log.d("Track", "DoubleTap ${it.x} | ${it.y}") }
Run Code Online (Sandbox Code Playgroud)
onTouchEventJetpack Compose是否有等价物?
如何检测长按
Button(
onClick = onClick,
interactionSource = interactionSource,
modifier = Modifier
.combinedClickable(
onClick = onClick,
onLongClick = onLongClick
)
)
Run Code Online (Sandbox Code Playgroud)
这是行不通的。onClick 是必需的,我猜它会消耗combinedClickable。我还需要一个交互源。我宁愿避免创建自定义按钮。
android button kotlin android-jetpack android-jetpack-compose