【一起来学习鸿蒙开发】HarmonyOS购物比价类行业实践 - 商品长按标记
·
如果你也对鸿蒙感兴趣,可以加入班级,一起学习鸿蒙开发!
场景介绍
商品长按标记是购物比价类应用中高频使用场景之一,如用户在商品列表页面长按某商品,标记“不喜欢”、“不想要”、“购买过”、“查看相似商品”等。
本示例基于Grid布局和组合手势实现商品长按标记并随标记更新商品列表的功能,帮助用户过滤筛选商品。
效果预览

实现思路
- 调用GestureGroup接口实现长按商品卡片弹出标记菜单栏组件,该组件通过Stack组件在商品卡片位置绘制标记菜单栏列表。
- // ProductCard.ets
- Image(this.product.imageUrl) // 商品图片(添加长按事件)
- .parallelGesture(GestureGroup(GestureMode.Exclusive,
- TapGesture({ count: 1, fingers: 1 })
- .onAction(() => {
- this.selectedProductId = 0
- }),
- LongPressGesture({ repeat: true })
- .onAction(() => {
- this.selectedProductId = this.product.id
- })
- ))
- if (this.selectedProductId === this.product.id) { // 长按覆层,只有选中时显示
- Stack() {...} // 半透明背景;菜单内容(定位到商品附近)
- .onClick(() => {
- this.selectedProductId = 0 // 点击覆盖层外部关闭
- })
- }
- 在handleAction函数中处理被选中标记项,如用户标记为“不喜欢”时,在商品列表中隐藏或移除该商品。
- buildActionButton(text: string | Resource, action: string, imgUrl: Resource) { // 构建标记操作按钮
- Button() {...}
- .onClick(() => {
- this.handleAction(action)
- this.selectedProductId = 0
- })
- }
- private handleAction(action: string) {...} // 处理标记选项点击
约束与限制
- 本示例支持API Version 17 Release及以上版本。
- 本示例支持HarmonyOS 5.0.5 Release SDK及以上版本。
- 本示例需要使用DevEco Studio 5.0.5 Release及以上版本进行编译运行。
工程目录
- ├──entry/src/main/ets // 代码区
- │ ├──entryability
- │ │ └──EntryAbility.ets // 程序入口
- │ ├──entrybackupability
- │ │ └──EntryBackupAbility.ets
- │ ├──model
- │ │ ├──BottomNavigation.ets // 底部导航栏组件
- │ │ ├──Product.ets // 商品实例定义
- │ │ ├──ProductCard.ets // 商品卡片组件
- │ │ ├──SearchBar.ets // 搜索栏组件
- │ │ └──TopMenuBar.ets // 顶部菜单栏组件
- │ └──pages
- │ ├──ItemListPage.ets // 主页面-商品列表页
- │ └──SimilarItemsPage.ets // 相似商品页
- └──entry/src/main/resources // 应用资源目录
参考文档
代码下载
更多推荐


所有评论(0)