HarmonyOS鸿蒙Next中安卓的MotionEvent拿到具体事件横纵坐标值如何实现

HarmonyOS鸿蒙Next中安卓的MotionEvent拿到具体事件横纵坐标值如何实现 例如:
int x = (int) event.getX()
在鸿蒙中的TouchEvent要通过什么方式拿到坐标值

6 回复

直接通过组件绑定 onTouch 事件回调获取坐标:

Text("触摸区域")

  .onTouch((event: TouchEvent) => {

    // 获取触摸点坐标

    let point = event.getPointerPosition(0);

    let x = point.getX();

    let y = point.getY();

    // 更新UI或处理逻辑

  })

更多关于HarmonyOS鸿蒙Next中安卓的MotionEvent拿到具体事件横纵坐标值如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以通过触摸事件 onTouch 拿到坐标

.onTouch((event?: TouchEvent) => {
  if (event && event.sourceTool === SourceTool.Finger) {
    if (event.touches) {
      console.log( 'TouchType:' + this.eventType + '\nDistance between touch point and touch element:\nx:'
        + event.touches[0].x + '\n' + 'y: ' + event.touches[0].y + '\nComponent globalPos:('
        + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\nwidth:'
        + event.target.area.width + '\nheight:' + event.target.area.height + '\ntargetDisplayId:' +
      event.targetDisplayId + '\npressedTime:' + event.touches[0].pressedTime + '\npressure:' +
      event.touches[0].pressure +
        '\nwidth:' + event.touches[0].width + '\nheight:' + event.touches[0].height)
    }
  }
})

可以看看TouchEvent属性touches(屏幕触点)的子类型TouchObjectTouchObject代表每个屏幕触点的类型,包含触点的x,y坐标。有多种不同基准点的x,y坐标,可以看看想用哪一种。

示例:

Canvas(this.context)
.width(300)
.height(150)
.onTouch((event) => {
  let x = event.touches[0].x
  let y = event.touches[0].y
})

在HarmonyOS Next中,通过PointerEvent类获取触摸事件的坐标值。使用getPointerPosition方法可获取当前指针的屏幕坐标,返回值为Point类型,包含x和y属性。示例代码:

onTouch(event) {
  let point = event.getPointerPosition(0);
  let x = point.x;
  let y = point.y;
}

其中参数0表示第一个触点的索引。

在HarmonyOS Next中,可以通过TouchEvent对象提供的getPointerPosition方法获取触摸事件的坐标值。具体实现如下:

// 假设event为TouchEvent对象
let point = event.getPointerPosition(0); // 获取第一个触摸点的坐标
let x = point.x; // 横坐标
let y = point.y; // 纵坐标

如果需要处理多指触控,可以通过遍历TouchEvent中的触摸点列表来获取每个点的坐标:

let pointers = event.getTouches(); // 获取所有触摸点
for (let i = 0; i < pointers.length; i++) {
    let point = pointers[i].position;
    console.log(`Point ${i}: x=${point.x}, y=${point.y}`);
}

注意:HarmonyOS Next使用ArkTS开发,其事件处理机制与安卓不同,需通过上述API获取坐标信息。

回到顶部