【鸿蒙软件开发】ArkTS通用事件

news2025/1/11 11:52:56

文章目录

  • 前言
  • 一、点击事件
    • 1.1 基础介绍
    • 1.2 ClickEvent对象说明
    • 1.3 示例代码
  • 二、触摸事件
    • 2.1 基础介绍
    • 2.2 ClickEvent对象说明
    • 2.3 示例代码
  • 二、焦点事件
    • 2.2 基础介绍
    • 3.2 示例代码
  • 总结


前言

在我们的ArkTS中有一些通用的事件,他们在所有的组件中都可以用,所以我们需要来学习一下。
获得更好的开发体验和效率!!!


一、点击事件

1.1 基础介绍

组件被点击时触发的事件。

名称支持冒泡功能描述
onClick(event: (event?: ClickEvent) => void)点击动作触发该回调,event返回值见ClickEvent对象说明。从API version 9开始,该接口支持在ArkTS卡片中使用。

1.2 ClickEvent对象说明

名称类型描述
screenXnumber点击位置相对于应用窗口左上角的X坐标。
screenYnumber点击位置相对于应用窗口左上角的Y坐标。
xnumber点击位置相对于被点击元素左上角的X坐标。
ynumber点击位置相对于被点击元素左上角的Y坐标。
timestampnumber
事件时间戳。触发事件时距离系统启动的时间间隔,单位纳秒。
targetEventTarget触发事件的元素对象显示区域。
sourceSourceType事件输入设备。

1.3 示例代码

// xxx.ets
@Entry
@Component
struct ClickExample {
  @State text: string = ''

  build() {
    Column() {
      Row({ space: 20 }) {
        Button('Click').width(100).height(40)
          .onClick((event: ClickEvent) => {
            this.text = 'Click Point:' + '\n  screenX:' + event.screenX + '\n  screenY:' + event.screenY
            + '\n  x:' + event.x + '\n  y:' + event.y + '\ntarget:' + '\n  component globalPos:('
            + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n  width:'
            + event.target.area.width + '\n  height:' + event.target.area.height + '\ntimestamp' + event.timestamp;
          })
        Button('Click').width(200).height(50)
          .onClick((event: ClickEvent) => {
            this.text = 'Click Point:' + '\n  screenX:' + event.screenX + '\n  screenY:' + event.screenY
            + '\n  x:' + event.x + '\n  y:' + event.y + '\ntarget:' + '\n  component globalPos:('
            + event.target.area.globalPosition.x + ',' + event.target.area.globalPosition.y + ')\n  width:'
            + event.target.area.width + '\n  height:' + event.target.area.height + '\ntimestamp' + event.timestamp;
          })
      }.margin(20)

      Text(this.text).margin(15)
    }.width('100%')
  }
}

在这里插入图片描述

二、触摸事件

2.1 基础介绍

组件被点击时触发的事件。

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

2.2 ClickEvent对象说明

名称类型描述
typeTouchType触摸事件的类型。
touchesArray<TouchObject>全部手指信息。
changedTouchesArray<TouchObject>当前发生变化的手指信息。
stopPropagation() => void阻塞事件冒泡。
timestampnumber
事件时间戳。触发事件时距离系统启动的时间间隔,单位纳秒。
targetEventTarget触发事件的元素对象显示区域。
sourceSourceType事件输入设备。

2.3 示例代码

// 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)
  }
}

在这里插入图片描述

二、焦点事件

2.2 基础介绍

焦点事件指页面焦点在可获焦组件间移动时触发的事件,组件可使用焦点事件来处理相关逻辑。

名称支持冒泡功能描述
onFocus(event: () => void)当前组件获取焦点时触发的回调。
onBlur(event:() => void)当前组件失去焦点时触发的回调。

3.2 示例代码

// xxx.ets
@Entry
@Component
struct FocusEventExample {
  @State oneButtonColor: string = '#FFC0CB'
  @State twoButtonColor: string = '#87CEFA'
  @State threeButtonColor: string = '#90EE90'

  build() {
    Column({ space: 20 }) {
      // 通过外接键盘的上下键可以让焦点在三个按钮间移动,按钮获焦时颜色变化,失焦时变回原背景色
      Button('First Button')
        .backgroundColor(this.oneButtonColor)
        .width(260)
        .height(70)
        .fontColor(Color.Black)
        .focusable(true)
        .onFocus(() => {
          this.oneButtonColor = '#FF0000'
        })
        .onBlur(() => {
          this.oneButtonColor = '#FFC0CB'
        })
      Button('Second Button')
        .backgroundColor(this.twoButtonColor)
        .width(260)
        .height(70)
        .fontColor(Color.Black)
        .focusable(true)
        .onFocus(() => {
          this.twoButtonColor = '#FF0000'
        })
        .onBlur(() => {
          this.twoButtonColor = '#87CEFA'
        })
      Button('Third Button')
        .backgroundColor(this.threeButtonColor)
        .width(260)
        .height(70)
        .fontColor(Color.Black)
        .focusable(true)
        .onFocus(() => {
          this.threeButtonColor = '#FF0000'
        })
        .onBlur(() => {
          this.threeButtonColor = '#90EE90'
        })
    }.width('100%').margin({ top: 20 })
  }
}

在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了点击、触摸、焦点事件,而ArkTS还提供了其他函数,有兴趣地可以自行去看官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

号外!百度Comate代码助手全新上线SaaS服务 - 免费申请试用+深入教程解读!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

全国高清影像数据导出TIF有多大?

全国数据导出为TIF文件之后有多大呢&#xff1f; 我们今天来分析探讨一下这个问题。 01背景 最近&#xff0c;有用户提出在交付数据时&#xff0c;需要交付TIF格式的数据&#xff0c;但我们的地图是基于自研的DAT格式分块存储。 我们在《毫不费力&#xff0c;让内网多一个…

外汇天眼:假冒违法平台害人害己,监管“铁拳”打击!

近年来&#xff0c;金融市场上的假冒违法平台问题日益严重&#xff0c;给投资者和监管机构带来了巨大的挑战。对此&#xff0c;英国FCA、意大利CONSOB和塞浦路斯CySEC等监管机构纷纷出手&#xff0c;打击假冒违法平台&#xff0c;以保护投资者的权益&#xff0c;整肃整个外汇市…

利用Windows自有工具,校验md5值

使用winr&#xff0c;打开cmd命令行窗口 去到对应目录中 对指定目录下的iso进行校验 具体命令行命令为&#xff1a; certutil -hashfile <文件名> <hash类型> md5 SHA1 SHA256都是可以校验的&#xff0c;但我工作中经常校验md5值&#xff0c;就先用了。 很久不写…

中国人民大学与加拿大女王大学金融硕士:培养具有国际视野和专业素养的金融精英

在全球化的今天&#xff0c;金融行业的发展日新月异&#xff0c;对于专业人才的需求也日益增长。为了满足这一需求&#xff0c;中国人民大学与加拿大女王大学联手打造了一款全新的金融硕士项目&#xff0c;旨在培养具有国际视野和专业素养的金融精英。 2013年8月&#xff0c;由…

Spring高手之路15——掌握Spring事件监听器的内部逻辑与实现

文章目录 1. 事件的层次传播2. PayloadApplicationEvent的使用3. 为什么选择自定义事件&#xff1f;4. 事件广播原理4.1 Spring 5.x的事件模型概述4.2 发布事件publishEvent源码分析4.3 Spring事件广播&#xff1a;从ApplicationEventMulticaster开始4.4 Spring事件发布与处理流…

代码随想录 Day27 贪心02上 LeetCode T122 买卖股票的最佳时机 II

LeetCode T122 买卖股票的最佳时机II 题目链接:122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 题目思路: 这题的基本思路还是使用贪心算法,有人可能还在思考啥是贪心算法,这个算法就是你提出一个思想,且找不到明显的反例,这个思路就可以一试,这道题的局…

腾讯云2023年双11云服务器优惠价格表

腾讯云2023年双11大促优惠活动已经拉开序幕&#xff0c;腾讯云推出了一系列云服务器的优惠活动&#xff0c;下面给大家整理分享腾讯云双11云服务器优惠价格表&#xff0c;让大家轻松了解各种云服务器实例的折扣价格和配置信息。 一、腾讯云双十一活动入口 活动入口&#xff1a;…

分类预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测

分类预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据…

墨西哥专线:国产商品迅速开拓墨西哥市场的基础

随着全球贸易的不断发展&#xff0c;越来越多的中国企业开始将目光投向海外市场。墨西哥作为北美洲的重要国家&#xff0c;拥有庞大的消费市场和广阔的发展空间&#xff0c;对于中国企业来说&#xff0c;无疑是一个极具潜力的市场。然而&#xff0c;如何让国产商品在这个市场上…

【Docker】Docker-Compose内置DNS负载均衡失效问题

Docker Compose实现负载均衡 还是对前面的例子docker-compose.yml稍微修改&#xff1a; version: "3.8"services:flask-demo:build:context: .dockerfile: Dockerfileimage: flask-demo:latestenvironment:- REDIS_HOSTredis-server- REDIS_PASS${REDIS_PASS}healt…

有没有PC端的配音软件推荐?(免下载)

配音软件还是电脑上使用最方便&#xff0c;而且电脑上可以使用的配音软件也非常多。只是你平时使用的不多&#xff0c;所有想用的时候才会找不到&#xff0c;对于经常使用配音软件的人来说&#xff0c;那真的太多了。今天给大家推荐一个免下载的配音网站&#xff0c;微信扫码即…

如何解决网站被攻击的问题?

在数字时代&#xff0c;网站安全问题日益突出&#xff0c;网络攻击的形式不断演进&#xff0c;因此&#xff0c;保护网站免受威胁至关重要。本文将探讨如何解决网站被攻击的问题&#xff0c;分析未来的网络攻击形式&#xff0c;并提供一些通俗易懂的建议&#xff0c;以加强网站…

【机器学习合集】泛化与正则化合集 ->(个人学习记录笔记)

文章目录 泛化与正则化1. 泛化(generalization)2. 正则化方法2.1 显式正则化方法显式正则化方法对比提前终止模型的训练多个模型集成Dropout技术 2.2 参数正则化方法2.3 隐式正则化方法方法对比 泛化与正则化 1. 泛化(generalization) 泛化不好可能带来的问题 模型性能不稳定容…

安全响应中心 — 垃圾邮件事件报告(10.13)

2023年10月 第二周 一. 样本概况 ✅ 案例1&#xff1a;DocuSign钓鱼 本周收到一封看似来自 DocuSign&#xff08;DocuSign 是一种在企业环境中广泛使用的电子协议管理平台&#xff09;的网络钓鱼电子邮件反馈。 如下图所示&#xff1a; 以上样本内容大体是说XX发送了一份文…

【postman】postman的使用与postman汉化

postman的使用 Postman 是一个接口测试工具软件&#xff0c;可以帮助开发人员管理测试接口。 官网&#xff1a;Postman API Platform psotman环境 首先import的或则new 创建一个环境 Variable 变量名 Type 类型 Initial value 初始值 C…

ubuntu vbox 5.2 资源 virtualbox-dkms

各种 linux 包 https://pkgs.org/search/?qpython3.6 配置 python 默认版本 查看已安装python $ u82:~/Py_demo$ ls /usr/bin/python* /usr/bin/python2 /usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.8设置默认版本 $ u82:~/Py_demo$ sudo update-alternatives…

VR智慧景区,为游客开启智慧旅游新时代

近年来&#xff0c;文旅部加强了5G、VR虚拟技术等在文旅产业行业的运用&#xff0c;随着科技的不断发展&#xff0c;VR技术的运用越来越广泛&#xff0c;VR智慧景区作为一种全新的旅游方式&#xff0c;也渐渐的受到了人们广泛的关注&#xff0c;它可以让人们足不出户就欣赏到各…

数字IC后端面试题目汇总含解析,ICer上岸必备!

大家都知道&#xff0c;面试的表现会对于个人职业发展的重要性&#xff0c;不仅能决定是否录用&#xff0c;还会影响到后期的谈薪&#xff0c;所以面试前一定要做好充分的准备。 今天IC修真院为大家带来了数字IC后端的面试题目&#xff0c;希望大家能够用得上。 面试题目&…