尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HarmonyOS7 长按手势详解:LongPressGesture 的触发机制与应用
文章目录前言效果展示实现原理代码详解状态管理长按区域Progress 组件参数完整代码常见问题Q长按和点击能同时绑定吗Qduration 设多少合适Q长按时能不能获取触摸位置进阶玩法长按显示菜单长按录音写在最后前言长按是移动端的隐藏菜单。微信长按消息可以回复、删除、转发相册长按图片可以批量选择。长按手势LongPressGesture在不增加界面元素的前提下给用户提供了额外的操作入口。今天来讲 ArkUI 里LongPressGesture的用法包括触发时长设置、状态反馈、以及与 Progress 组件的配合。效果展示我们做一个红色的方块长按 0.8 秒后方块内文字变为长按中…显示一个环形进度条Progress触发次数 11 秒后自动恢复初始状态实现原理LongPressGesture的核心参数是duration——用户按住多久才算长按。默认是 500ms我们可以自定义。用户按下 ↓ 等待 duration 毫秒 ↓ 触发 onAction 回调 ↓ 如果 duration 没到就松手不触发代码详解状态管理StatelongPressCount:number0StateisPressing:booleanfalseStateprogress:number0三个状态变量longPressCount— 长按触发次数isPressing— 是否处于长按中的视觉状态progress— 环形进度条的进度值长按区域Column(){if(this.isPressing){Text(长按中...).fontSize(18).fontColor(#FFFFFF).margin({bottom:8})Progress({value:this.progress,total:100,type:ProgressType.Ring}).width(60).height(60).color(#FFFFFF)}else{Text(长按我).fontSize(18).fontColor(#FFFFFF)}}.width(140).height(140).backgroundColor(#FF6B6B).borderRadius(20).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).gesture(LongPressGesture({duration:800}).onAction((){this.longPressCountthis.isPressingtruethis.progress100setTimeout((){this.isPressingfalsethis.progress0},1000)}))这段代码有几个值得注意的地方条件渲染isPressing为true时显示长按中…“和进度条为false时显示长按我”。Progress 组件ProgressType.Ring渲染环形进度条。value设为 100等于total进度条就满了。手势绑定用.gesture()而不是.onClick()因为LongPressGesture是一个专门的手势识别器需要通过gestureAPI 绑定。自动恢复setTimeout在 1 秒后把isPressing和progress恢复初始值方块回到默认状态。Progress 组件参数参数说明本例值value当前进度100满total总进度100type样式类型ProgressType.Ring环形color进度条颜色#FFFFFF白色Progress 还支持ProgressType.Linear线性进度条和ProgressType.Eclipse月蚀形。完整代码EntryComponentstruct LongPressGesturePage{StatelongPressCount:number0StateisPressing:booleanfalseStateprogress:number0build(){Column(){Column(){Text(长按手势).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:16})Text(触发次数${this.longPressCount}).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#4D96FF).margin({bottom:20})Column(){if(this.isPressing){Text(长按中...).fontSize(18).fontColor(#FFFFFF).margin({bottom:8})Progress({value:this.progress,total:100,type:ProgressType.Ring}).width(60).height(60).color(#FFFFFF)}else{Text(长按我).fontSize(18).fontColor(#FFFFFF)}}.width(140).height(140).backgroundColor(#FF6B6B).borderRadius(20).justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).gesture(LongPressGesture({duration:800}).onAction((){this.longPressCountthis.isPressingtruethis.progress100setTimeout((){this.isPressingfalsethis.progress0},1000)}))Text(长按 0.8 秒触发).fontSize(12).fontColor(#999999).margin({top:16})}.width(100%).padding(24).backgroundColor(#FFFFFF).borderRadius(12)}.width(100%).height(100%).backgroundColor(#F5F6FA).padding(16)}}常见问题Q长按和点击能同时绑定吗可以。用.gesture()绑定长按用.onClick()绑定点击两者不冲突。用户短触触发onClick按住不放触发LongPressGesture。Qduration 设多少合适系统默认 500ms 是一个不错的基准。如果你希望不容易误触比如删除操作可以设长一点800-1000ms。如果希望灵敏响应比如选中操作可以设短一点300-400ms。Q长按时能不能获取触摸位置LongPressGesture的onAction回调不带位置参数。如果需要触摸位置用onTouch配合TouchType.Down的时间和坐标来判断。进阶玩法长按显示菜单一个常见的场景是长按后弹出一个操作菜单StateshowMenu:booleanfalse.gesture(LongPressGesture({duration:500}).onAction((){this.showMenutrue})).bindPopup(this.showMenu,{builder:this.menuBuilder,placement:Placement.Bottom,onStateChange:(e){if(!e.isVisible)this.showMenufalse}})长按录音社交 App 里长按录音的功能.gesture(LongPressGesture({duration:200}).onAction((){// 开始录音this.isRecordingtrue})).onTouch((event:TouchEvent){if(event.typeTouchType.Upthis.isRecording){// 停止录音并发送this.isRecordingfalse}})写在最后LongPressGesture为界面添加了第二层交互。用户不需要额外的按钮按住就能触发更多功能。配合duration参数可以精确控制触发时机配合 Progress 或 Popup 可以给用户清晰的反馈。在设计长按功能时记得给用户一些提示比如长按试试的引导文字不然很多用户根本不知道这个隐藏功能的存在。
RELATED

相关推荐

Laravel Echo实现WebSocket实时通信全解析

Laravel Echo实现WebSocket实时通信全解析

1. Laravel Echo 基础概念与核心价值Laravel Echo 是 Laravel 生态中用于实时事件广播的 JavaScript 库,它让开发者能够轻松实现服务端与客户端之间的实时通信。在现代化 Web 应用中,实时功能已成为标配 - 从聊天消息即时推送到订单状态实时更新&#xf…

📅 2026/10/14 16:05:22
HarmonyOS7 点击手势入门:onClick 事件的原理与实战

HarmonyOS7 点击手势入门:onClick 事件的原理与实战

文章目录前言基础概念onClick vs gesture(TapGesture)onClick 的触发条件从简到繁最简单的点击记录点击时间显示点击信息完整代码常见问题Q:任何组件都能加 onClick 吗?Q:onClick 和 onTouch 有什么区别?Q:双击怎么实现…

📅 2026/10/20 14:19:29
HarmonyOS7 综合表单实战:多种输入组件 + 分组布局 + 验证提交

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

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

📅 2026/10/14 4:53:41
MORE NEWS

更多资讯

📰

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

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

📰

南宁电工证多久复审考前押题全攻略

南宁电工证多久复审考前押题全攻略 你是不是也觉得学历不高,怕报不上电工证?别担心,南宁电工证的报考门槛其实比你想的低得多,关键是你得知道怎么准备,特别是【考前押题】,能让你少走很多弯路。…

📰

沈阳电工证报价多少?全国通用证如何高效取证

沈阳电工证报价多少?全国通用证如何高效取证 工地太忙根本没时间复习考试,这几乎是每个项目现场管理员的常态。每天穿梭在工地现场,处理施工问题、协调工人、盯进度、做记录,哪还有空去翻厚厚的教材?但如果你是从事电气相关工作的人员,…

📰

在阳春如何考取电工证值不值得考

在阳春如何考取电工证值不值得考 证书过期了不知道怎么复审延期,这几乎是每个特种作业人员都会遇到的问题。特别是在阳春地区,电工证作为从事电力相关工作的“通行证”,其有效期和复审流程直接影响到从业者的日常工作安排。如果你正面临证书到期、不知如何…

📰

矿井电工作业指导书千万别踩坑:特种作业证怎么考怎么用

矿井电工作业指导书千万别踩坑:特种作业证怎么考怎么用 急需特种作业证才能上岗找工作,但很多人对矿井电工作业指导书一头雾水,不知道怎么考、怎么用、有效期多久,更怕踩坑。特别是现在企业对证件要求越来越严格,没有合规的矿井电工作业指导书,连面试都…

📰

证书过期了不知道怎么复审延期?补贴电工证有哪些条件全国通用吗

证书过期了不知道怎么复审延期?补贴电工证有哪些条件全国通用吗 证书过期了不知道怎么复审延期?你不是一个人。很多持证人都在复审阶段遇到过各种“卡壳”问题,比如不知道怎么操作、流程繁琐、资料不全,甚至被一些代办机构“割韭菜”。今天咱们就聊聊补贴…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬