尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HarmonyOS7 点击手势入门:onClick 事件的原理与实战
文章目录前言基础概念onClick vs gesture(TapGesture)onClick 的触发条件从简到繁最简单的点击记录点击时间显示点击信息完整代码常见问题Q任何组件都能加 onClick 吗QonClick 和 onTouch 有什么区别Q双击怎么实现进阶技巧点击反馈效果防重复点击写在最后前言手势是移动端交互的灵魂。没有手势的界面就是一张静态图。ArkUI 提供了丰富的手势 API其中最基础的就是点击手势——onClick。别看onClick简单它是一切手势交互的起点。按钮点击、列表项点击、卡片点击、图片点击……到处都是它。今天从基础开始把点击手势讲透。基础概念onClick vs gesture(TapGesture)ArkUI 里有两种方式处理点击方式写法特点onClick.onClick(() {...})简单直接适合大多数场景TapGesture.gesture(TapGesture().onAction(() {...}))可设置点击次数、与其他手势组合对于单纯的点击响应onClick就够用了。TapGesture的优势在于可以设置count双击、三击和跟其他手势并行识别。onClick 的触发条件onClick在用户完成一次按下 抬起操作后触发。注意是完成——如果用户按下去之后滑走了滑出组件区域onClick不会触发。这个行为跟 HTML 的click事件一致。从简到繁最简单的点击StatetapCount:number0Column(){Text(点击区域).fontSize(16).fontColor(#FFFFFF)}.width(100%).height(120).backgroundColor(#4D96FF).borderRadius(16).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).onClick((){this.tapCount})给一个Column容器加上.onClick整个区域就变成可点击的了。每次点击计数器 1。记录点击时间StatetapCount:number0StatelastTapTime:string.onClick((){this.tapCountthis.lastTapTimenewDate().toLocaleTimeString()})在计数器之外再记录上次点击的时间。toLocaleTimeString()返回类似 “14:30:25” 格式的本地时间字符串。显示点击信息Text(点击次数${this.tapCount}).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#4D96FF).margin({bottom:8})if(this.lastTapTime){Text(上次点击${this.lastTapTime}).fontSize(12).fontColor(#999999)}用条件渲染显示上次点击时间——第一次点击前不显示。完整代码EntryComponentstruct TapGestureBasic{StatetapCount:number0StatelastTapTime:stringbuild(){Column(){Column(){Text(点击手势).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:16})Text(点击次数${this.tapCount}).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#4D96FF).margin({bottom:8})if(this.lastTapTime){Text(上次点击${this.lastTapTime}).fontSize(12).fontColor(#999999)}Column(){Text(点击区域).fontSize(16).fontColor(#FFFFFF)}.width(100%).height(120).backgroundColor(#4D96FF).borderRadius(16).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).margin({top:20}).onClick((){this.tapCountthis.lastTapTimenewDate().toLocaleTimeString()})Column(){Text(手势说明).fontSize(13).fontColor(#999999).margin({bottom:8})Text(• onClick 是最基础的点击事件).fontSize(12).fontColor(#AAAAAA).margin({bottom:4})Text(• 可用于按钮、容器等各种组件).fontSize(12).fontColor(#AAAAAA)}.width(100%).margin({top:24}).padding(12).backgroundColor(#F8F8F8).borderRadius(8)}.width(100%).padding(24).backgroundColor(#FFFFFF).borderRadius(12)}.width(100%).height(100%).backgroundColor(#F5F6FA).padding(16)}}常见问题Q任何组件都能加 onClick 吗是的。Column、Row、Stack、Text、Image、Button……几乎所有可见组件都支持onClick。不过需要注意如果组件没有设置宽高或背景色可能无法响应点击因为没有可点击的区域。QonClick 和 onTouch 有什么区别onTouch能获取更底层的触摸事件包括按下Down、抬起Up、移动Move、取消Cancel。onClick只在按下 抬起完成时触发。大多数情况下onClick就够了。Q双击怎么实现用TapGesture并设置count参数.gesture(TapGesture({count:2}).onAction((){// 双击逻辑}))进阶技巧点击反馈效果加上.scale和动画实现点击缩放效果StateisPressed:booleanfalseColumn(){/* ... */}.scale({x:this.isPressed?0.95:1,y:this.isPressed?0.95:1}).animation({duration:100}).onTouch((event:TouchEvent){if(event.typeTouchType.Down)this.isPressedtrueif(event.typeTouchType.Up||event.typeTouchType.Cancel){this.isPressedfalse}}).onClick((){// 点击逻辑})防重复点击防止用户快速连续点击触发多次操作StatelastClickTime:number0.onClick((){constnowDate.now()if(now-this.lastClickTime500)return// 500ms 内不响应this.lastClickTimenow// 正常点击逻辑})写在最后onClick是最简单的手势也是用得最多的手势。给它一个回调函数就能响应用户的点击操作。记住两个要点组件要有可点击区域设宽高或背景以及注意防重复点击。后续文章会讲更复杂的手势——长按、拖拽、缩放、旋转。但不管什么手势核心模式都一样.gesture(XXX().onAction(callback))。掌握了onClick后面的手势学起来就很快了。
RELATED

相关推荐

HarmonyOS7 综合表单实战:多种输入组件 + 分组布局 + 验证提交

HarmonyOS7 综合表单实战:多种输入组件 + 分组布局 + 验证提交

文章目录前言效果展示方案设计状态管理分组布局编码实现基本信息分组联系方式分组偏好设置分组提交与重置按钮优化建议用对象统一管理表单数据分组组件化写在最后前言 前面十几篇文章讲了表单的各种零散知识点——输入框、选择器、开关、验证、提交、重置。今天把这些全部串起…

📅 2026/10/14 4:53:41
ROS 2和ROS 1的比较

ROS 2和ROS 1的比较

下图展示了ROS 2和ROS 1在架构上的比较,两者主要实现了机器人开发中的中间层,主要提供了机器人人中的关键通信机制。ROS 2改进了ROS 1的通信模式,引入了DDS(Data Distribution Service,数据分发服务)作为通…

📅 2026/9/25 14:46:58
Mysql数据库表的操作

Mysql数据库表的操作

登录数据库mysql -u 用户名 -h 服务器的主机地址 -p密码 -A-u 后面跟登录数据库的用户名,这里使用root-h 后面的参数是服务器的主机地址,在这里客户端和服务器在同一台机器上,所以输入 localhost 或 者 IP 地址-p 后面是用户登录密码&#…

📅 2026/10/5 10:19:33
MORE NEWS

更多资讯

📰

建筑电工证最新题库多久拿证?学历不高怕报不上名的看过来

建筑电工证最新题库多久拿证?学历不高怕报不上名的看过来 你是不是也这样?学历不高,担心自己连报名都过不了,更别说通过考试了?别急,今天咱们就来聊聊【建筑电工证最新题库】的相关内容,尤其是你最关心的 多久拿证…

📰

中级电工证考低压电工在哪考才能快速上岗

中级电工证考低压电工在哪考才能快速上岗 你是不是也在为找工作发愁?手头没证,面试连门都进不去,尤其是电工类岗位, 中级电工证考低压电工 成了很多人的“敲门砖”。今天咱们就来聊聊, 中级电工证考低压电工在哪考…

📰

工地太忙根本没时间复习考试?电工证考试购买全攻略来了,官方报名入口在这里

工地太忙根本没时间复习考试?电工证考试购买全攻略来了,官方报名入口在这里 工地太忙根本没时间复习考试,这是很多一线电工兄弟的真实写照。手头的活干不完,还要抽时间准备考试,想想就头大。但电工证不仅是上岗的通行证,更是你职业发展的“敲门砖”。特…

📰

高压电工作业老师讲课真实经历:怕考不过白交培训费?别急,我来帮你稳过!

高压电工作业老师讲课真实经历:怕考不过白交培训费?别急,我来帮你稳过! 你是不是也这样,报名了高压电工作业培训,花了不少钱,结果一上考场就懵?别担心,我就是从河南商丘项目现场管理员的角度,亲身经历过高压电工作业老师讲课培训、考试、复审全流程…

📰

应急厅有弱电电工证吗?上岗必备证书怎么考?许昌劳务班组负责人必看

应急厅有弱电电工证吗?上岗必备证书怎么考?许昌劳务班组负责人必看 你是不是也这样,想找个电工岗位,却发现没有弱电电工证,连面试机会都没有?或者你已经干了几年电工,但对应急厅到底有没有弱电电工证一知半解?别急,今天就给你说清楚,…

📰

杭州高压电工证办理怎么报名?实操考试心里没底怕挂科怎么办?

杭州高压电工证办理怎么报名?实操考试心里没底怕挂科怎么办? 你不是一个人,实操考试心里没底怕挂科,这是大多数准备参加杭州高压电工证办理的学员的真实写照。高压电工证考试不光是笔试,实操更是决定你能不能顺利拿证的关键。今天就带你一步步了解怎么报…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬