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

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
http://www.xdnf.cn/news/1570.html

相关文章:

  • ROS第十二梯:ros-noetic和Anaconda联合使用
  • ProxySQL实现mysql8主从同步读写分离
  • 开启内测!360纳米AI推出“MCP万能工具箱”
  • C# 设计原则总结
  • stack和queue的学习
  • 基于 Windows11 WSL2 的 ESP-IDF V5.4 开发环境搭建教程
  • 如何安装Visio(win10)
  • 简易博客点赞系统实现
  • 基于ACL方式手动建立站点间 IPSec 隧道
  • Go协程的调用与原理
  • 文件系统常见函数
  • WebGL简介
  • Redis 服务自动开启、设置密码和闪退问题
  • 程序员学英文之Shipment Claim 运输和索赔
  • 泛型T和object
  • 嵌入式系统调用底层基本原理分析
  • 绝区零薇薇安养成攻略 绝区零薇薇安驱动盘带什么
  • 马来西亚股票数据接口技术解析与接入实践
  • 【EasyPan】removeFile2RecycleBatch方法及递归操作解析
  • GD32F407单片机开发入门(六)定时器TIMER详解及实战含源码
  • 18487.1-2015-解读笔记三-交流充电之车桩交互-PWM
  • 集结号海螺捕鱼组件搭建教程与源码结构详解(第一篇)
  • Hi3518E官方录像例程源码流程分析(五)
  • 【论文解读】----Question Answering and Grounding for Remote Sensing Change Detection
  • 【前沿技术解析】钠离子电池突破性进展:低成本+高安全重塑新能源产业格局
  • 深入理解XGBoost(何龙 著)学习笔记(一)
  • pojovoDto等概念
  • DocsGPT remote接口RCE(CVE-2025-0868)
  • 【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
  • 【AI提示词】公司法律顾问