当前位置: 首页 > news >正文

HarmonyOS Grid 网格列表可长按 item 拖动移动位置

方案一
@Component
struct WorkCircleCreatePage {// 存储车控列表的数组@State VehicleDoorArr: IVehicleDoor[] = []// 当前移动的Item索引@State CurrentIndex: number = -1// 拖动时显示的数据@State MoveItem: IVehicleDoor = { title: '', icon: '' }// 拖动时放大倍数@State ScaleXY: ScaleOptions = { x: 1, y: 1 }// 是否超出范围@State isExtendGridArea: boolean = false@State isPress: boolean = false //是否按压aboutToAppear() {this.getData()}getData() {// 列表的数据let list: IVehicleDoor[] = [{ title: 'item1', icon: $r('app.media.portrait_person_default') },{ title: 'item2', icon: $r('app.media.portrait_person_default') },{ title: 'item3', icon: $r('app.media.portrait_person_default') },{ title: 'item4', icon: $r('app.media.portrait_person_default') },{ title: 'item5', icon: $r('app.media.portrait_person_default') },{ title: 'item6', icon: $r('app.media.portrait_person_default') },{ title: 'item7', icon: $r('app.media.portrait_person_default') },]if (this.VehicleDoorArr.length == 0) {list.forEach((item: IVehicleDoor, index: number) => {this.VehicleDoorArr.push(item)})}}// 交换数组位置changeIndex(itemIndex: number, insertIndex: number) {// this.VehicleDoorArr.splice(insertIndex,1,this.VehicleDoorArr(itemIndex,1)[0])const item = this.VehicleDoorArr[itemIndex]this.VehicleDoorArr.splice(itemIndex, 1)this.VehicleDoorArr.splice(insertIndex, 0, item)}//设置拖拽过程中显示的图片。@BuilderpixelMapBuilder() {Column() {Column() {Column() {Image(this.MoveItem.icon).width(24).aspectRatio(1)}.height(56).width(56).borderRadius(56).justifyContent(FlexAlign.Center).backgroundColor(Color.White).draggable(false) //是否支持拖拽Text(this.MoveItem.title).height(17).fontSize('12fp').textAlign(TextAlign.Center).fontFamily('PingFang SC').fontWeight(400).margin({ top: 6 })}.scale(this.ScaleXY)}.width('25%').height(100).justifyContent(FlexAlign.Center)}build() {NavDestination() {Column() {Row() {Text('拖拽实现自定义排序').width('100%').textAlign(TextAlign.Center)}.width('100%').height(100)Row() {Divider().strokeWidth(0.5).width(95)Text('长按可拖动顺序').width(112).height(24).fontSize('16fp').fontWeight(400).textAlign(TextAlign.Center).fontFamily('PingFang SC').margin({ left: 16.5, right: 16.5 })Divider().strokeWidth(0.5).width(95)}.width('100%').margin({ top: 24, bottom: 24 }).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center)Grid() {ForEach(this.VehicleDoorArr, (item: IVehicleDoor, index: number) => {GridItem() {VehicleDoorItem({ VehicleDoorItem: item })}.scale(this.CurrentIndex === index ? th

相关文章:

  • Shopee五道质检系统重构东南亚跨境格局,2025年电商游戏规则悄然改写
  • QT容器类控件及其属性
  • 文件属性隐写
  • 模型 观测者效应
  • Go协程的调用与原理
  • 被裁20240927 --- 视觉目标跟踪算法
  • go中redis使用的简单介绍
  • Spring Boot 请求参数接收控制指南
  • Python爬虫第18节-动态渲染页面抓取之Splash使用上篇
  • 武装Burp Suite工具:xia SQL自动化测试_插件
  • SQLMesh 通知系统深度解析:构建自动化监控体系
  • 机器学习基础 - 分类模型之朴素贝叶斯
  • 26-算法打卡-字符串-右旋字符串-第二十六天
  • 基于Quill的文档编辑器开发日志(上)——前端核心功能实现与本地存储管理
  • 【Unity笔记】Unity音效管理:ScriptableObject配置 + 音量控制 + 编辑器预览播放自动化实现
  • Science Robotics 新型层级化架构实现250个机器人智能组队,“单点故障”系统仍可稳定运行
  • 主流开源 LLM 应用开发平台详解
  • 店匠科技摘得 36 氪“2025 AI Partner 创新大奖”
  • 《楞严经》中“魔”与魔王波旬的关联性分析
  • 数据分析:用Excel做周报
  • 长三角铁路持续迎五一出行高峰:今日预计发送旅客418万人次
  • “国宝探索记”增强亲子连接,国宝成了生活想象的一部分
  • 5月资金面前瞻:政府债净融资规模预计显著抬升,央行有望提供流动性支持
  • 特朗普宣布提名迈克·沃尔兹为下一任美国驻联合国大使
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 投资者建议发行优惠套票给“被套”小股东,张家界:将研究考虑