扩展Modifier函数并调用
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.PointerEventPass
import androidx.compose.ui.input.pointer.pointerInput
import kotlinx.coroutines.coroutineScope
fun Modifier.disableSplitMotionEvents() =
pointerInput(Unit) {
coroutineScope {
var currentId: Long = -1L
awaitPointerEventScope {
while (true) {
awaitPointerEvent(PointerEventPass.Initial).changes.forEach { pointerInfo ->
when {
pointerInfo.pressed && currentId == -1L -> currentId = pointerInfo.id.value
pointerInfo.pressed.not() && currentId == pointerInfo.id.value -> currentId = -1
pointerInfo.id.value != currentId && currentId != -1L -> pointerInfo.consume()
else -> Unit
}
}
}
}
}
}
该代码段展示了如何扩展Compose的Modifier,实现一个名为`disableSplitMotionEvents`的功能,它用于在pointerInput中处理触摸事件。通过coroutineScope和awaitPointerEventScope,代码跟踪当前活动的触控点ID,阻止多个独立的手势操作。
1万+

被折叠的 条评论
为什么被折叠?



