HarmonyOS(二十四)——Harmonyos通用事件之触摸事件

1.触摸事件。

触摸事件是HarmonyOS通用事件的一种事件之一,当手指在组件上按下、滑动、抬起时触发。

名称 是否冒泡 功能描述
onTouch(event: (event?: TouchEvent) => void) 手指触摸动作触发该回调,event返回值见下面TouchEvent介绍。

2. TouchEvent对象

名称 类型 描述
onTouch(event: (event?: TouchEvent) => void) 手指触摸动作触发该回调,event返回值见下面TouchEvent介绍。
type TouchType 触摸事件的类型。
touches Array<TouchObject> 全部手指信息。
changedTouches Array<TouchObject> 当前发生变化的手指信息。
stopPropagation () => void 阻塞事件冒泡。
timestamp8+ number 事件时间戳。触发事件时距离系统启动的时间间隔,单位纳秒。
target8+ EventTarget 触发事件的元素对象显示区域。
source8+ SourceType 事件输入设备。

3.TouchObject对象

名称 类型 描述
type TouchType 触摸事件的类型
id number 手指唯一标识符
sscreenX number 触摸点相对于应用窗口左上角的X坐标。
screenY number 触摸点相对于应用窗口左上角的Y坐标。
X number 触摸点相对于被触摸元素左上角的X坐标。
Y number 触摸点相对于被触摸元素左上角的Y坐标。

4. 完整实例

下面用一个简单的小列子查看一下触摸事件touch对应的TouchEvent的用法。

typescript 复制代码
// xxx.ets
@Entry
@Component
struct TouchExample {
  @State text: string = ''
  @State eventType: string = ''

  build() {
    Column() {
      Button('Touch').height(40).width(100)
        .onTouch((event: TouchEvent) => {
          if (event.type === TouchType.Down) {
            this.eventType = 'Down'
          }
          if (event.type === TouchType.Up) {
            this.eventType = 'Up'
          }
          if (event.type === TouchType.Move) {
            this.eventType = 'Move'
          }
          this.text = '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
        })
      Button('Touch').height(50).width(200).margin(20)
        .onTouch((event: TouchEvent) => {
          if (event.type === TouchType.Down) {
            this.eventType = 'Down'
          }
          if (event.type === TouchType.Up) {
            this.eventType = 'Up'
          }
          if (event.type === TouchType.Move) {
            this.eventType = 'Move'
          }
          this.text = '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
        })
      Text(this.text)
    }.width('100%').padding(30)
  }
}

运行查看一下效果如下:

相关推荐
youyin1 天前
HarmonyOS ArkUI 组件与自定义组件零基础:从搭页面到组件化开发
华为·harmonyos
HwJack201 天前
【HarmonyOS开发小实践】ArkTS 从 TypeScript 到方舟语言的演进
华为·harmonyos
张星河zen1 天前
4096卡、8EFLOPS、7.2T NPO:华为昇腾960超节点详解
华为·ai训练·ai推理·超节点·npo·昇腾960·hi-one
云运维笔记1 天前
华为设备IP地址配置全攻略
运维·网络·计算机网络·华为
威哥爱编程1 天前
HarmonyOS 7 星盾机密风控实战:设备风险因子端侧融合计算,可用不可见
harmonyos·arkts
威哥爱编程1 天前
HarmonyOS 7 应用快启实战:关键资源预加载进内存,冷启告别白屏
华为·harmonyos·arkts
马剑威(威哥爱编程)1 天前
【共创稿事节】HarmonyOS 7 视觉 AI 进阶实战:人脸检测 + 通用文字识别(OCR)两步接入
华为·harmonyos·arkts
HMS Core2 天前
HarmonyOS智慧多窗,让应用在任意窗口都“恰到好处”
harmonyos
梦想不只是梦与想2 天前
鸿蒙 应用发布准备工作(一)
harmonyos·鸿蒙上架·鸿蒙应用发布