Compose Multiplatform 组件获取touch/pointer事件

类似于Android组件的`onToucheEvent(event)` ,Compose 组件 通过`pointerInput()`的`awaitPointerEvent()`来获得原始输入。

```kotlin

Canvas(
modifier = Modifier
  .fillMaxSize()
  .pointerInput(Unit){
     awaitPointerEventScope {
       while(true){
          val evt = awaitPointerEvent()
          val pt = evt.changes.get(0);
          val pos = pt.position
          if(pt.type == PointerType.Mouse){// 鼠标
                if (evt.type == PointerEventType.Press) {// 按下(左键?)
                    path.moveTo(pos.x, pos.y)
                }else if(pt.pressed){// 按下之后的滑动
                    path.lineTo(pos.x, pos.y)
                }
           }else if(pt.type == PointerType.Touch) { // 手指触摸
                if (evt.type == PointerEventType.Press) {
                    path.moveTo(pos.x, pos.y)
                } else {
                    path.lineTo(pos.x, pos.y)
                }
            }
           }// end while
          }
     //
  }
){
// drawPath{}
}

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值