当前位置: 首页 > 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做周报
  • 3岁男童疑遭父亲虐待,杭州警方:在异地发生,嫌疑人已被抓
  • 拖车10公里收1900元?货车司机质疑收费过高,潮州饶平县市监局已介入
  • 马上评丨从东方红一号到神二十,中国航天步履不停
  • 三亚亚龙湾3.4公里岸线近岸海域使用权挂牌出让,起始价近九千万
  • 宜昌为何能有一批世界级农业:繁育虫草养殖鲟鱼,柑橘魔芋深耕大健康
  • 上海4-6月文博美展、剧目演出不断,将开设直播推出文旅优惠套餐