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后面的手势学起来就很快了。

相关新闻

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

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

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

2026/7/24 8:15:48 阅读更多 →
HarmonyOS7 动态表单:用 ForEach 实现字段的增删操作

HarmonyOS7 动态表单:用 ForEach 实现字段的增删操作

文章目录前言灵感来源设计思路数据模型实现过程状态管理ForEach 渲染字段列表添加字段按钮展示所有字段踩坑总结坑一:ForEach 的 key 问题坑二:splice 不触发 UI 更新坑三:onChange 里的闭包陷阱完整代码写在最后前言 大部分表单的字段是固定…

2026/7/24 8:41:42 阅读更多 →
HarmonyOS7 多步骤表单向导:StepIndicator 与条件渲染的协作

HarmonyOS7 多步骤表单向导:StepIndicator 与条件渲染的协作

文章目录前言应用场景设计思路步骤规划状态管理实现过程步骤指示器条件渲染各步骤内容导航按钮进阶玩法步骤间的数据验证步骤指示器组件化写在最后前言 有些表单字段太多,一口气让用户填完会让人望而却步。这时候把表单拆成多个步骤,一步一步引导用户填…

2026/7/24 9:59:24 阅读更多 →

最新新闻

Qwen3.5大模型技术演进与核心能力解析

Qwen3.5大模型技术演进与核心能力解析

1. Qwen到Qwen3.5的技术演进全景作为长期跟踪大模型技术发展的从业者,我完整经历了Qwen系列从初代到3.5版本的迭代过程。这次升级绝非简单的版本号变更,而是涉及模型架构、训练策略、数据工程等多个维度的系统性革新。最直观的表现是,在同等硬…

2026/7/24 11:23:50 阅读更多 →
AMD Zen 6 EPYC处理器搭载3D V-Cache技术,提升服务器性能

AMD Zen 6 EPYC处理器搭载3D V-Cache技术,提升服务器性能

这次我们来看一个关于 AMD 处理器的重要消息:微软间接确认 AMD 将推出配备 3D V-Cache 的 "Zen 6" EPYC 处理器。这个消息对于关注服务器硬件、数据中心技术和处理器架构发展的技术从业者来说,是一个值得关注的信号。 从目前的信息来看&#…

2026/7/24 11:23:50 阅读更多 →
BP神经网络原理与实战调优指南

BP神经网络原理与实战调优指南

1. 神经网络基础与BP算法核心思想BP神经网络作为深度学习的基础模型,其重要性怎么强调都不为过。我第一次接触反向传播算法时,那种"原来如此"的顿悟感至今记忆犹新。BP神经网络本质上是通过误差反向传播来调整网络参数的多层感知机&#xff0c…

2026/7/24 11:23:50 阅读更多 →
如何查看Vue CLI创建的项目是基于Vue 2还是Vue 3

如何查看Vue CLI创建的项目是基于Vue 2还是Vue 3

要确定一个Vue CLI创建的项目是基于Vue 2还是Vue 3,你可以通过几种不同的方法进行确认。下面是一些常用的方法:1. 查看package.json文件在你的项目根目录下,打开package.json文件。在dependencies或devDependencies部分,你可以查找…

2026/7/24 11:23:50 阅读更多 →
本地运行大语言模型:Continue与Ollama开发实践

本地运行大语言模型:Continue与Ollama开发实践

1. 项目概述 在本地开发环境中高效运行大语言模型(LLM)正成为开发者们的新需求。Continue 作为一个开源的开发者工具平台,与 Ollama 这款轻量级本地 LLM 运行环境的结合,为开发者提供了一种全新的工作流可能性。这种组合允许开发者…

2026/7/24 11:23:49 阅读更多 →
基于VMD-CNN-BiLSTM的轴承故障诊断技术解析

基于VMD-CNN-BiLSTM的轴承故障诊断技术解析

1. 项目背景与核心价值 轴承作为旋转机械的核心部件,其健康状态直接影响设备运行安全。传统振动信号分析方法在面对复杂工况时存在特征提取不充分、时序建模能力弱等痛点。本项目融合变分模态分解(VMD)、卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)三大技术&…

2026/7/24 11:22:49 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻