OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍

本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。

效果图预览

在这里插入图片描述
使用说明:

  1. 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。
  2. 拖拽List中子组件,到目标List子组件位置,进行两者位置互换。

实现思路

1.在Grid组件中,通过editMode()打开编辑模式、通过onItemDragStart()指定拖拽时样式、通过onItemDrop()指定拖拽释放时的行为。

Grid() { ... }
.editMode(true) // 设置Grid进入编辑模式
.onItemDragStart((event: ItemDragInfo, itemIndex: number) => { // 设置拖拽过程中显示的图形this.movedItem = this.appInfoList[itemIndex]; // 记录原位置子组件信息return this.itemWhileDrag(); 
})
.onItemDrop((event: ItemDragInfo, itemIndex: number, insertIndex: number, isSuccess: boolean) => { // 拖拽释放时,触发回调// isSuccess=false时,说明drop的位置在grid外部;insertIndex > length时,说明有新增元素的事件发生if (isSuccess && insertIndex < this.appInfoList.length) {this.changeIndex(itemIndex, insertIndex); // 互换子组件index值}
})

2.在List组件中,通过ListItem的onDragStart()方法指定拖拽开始时的行为,通过List的onTouch()指定拖拽释放时的行为。

List({ space: LIST_SPACE }) {ForEach(this.appInfoList, (item: AppInfo, index) => {ListItem() { ... }.onDragStart(() => {item.visible = false; // 拖拽时,设置子组件原位置图标不可见}).onTouch((event: TouchEvent) => { // 拖拽释放时,记录目标位置子组件index值if (event.type === TouchType.Down) {this.dragIndex = index;}})})
}
.onDrop((event: DragEvent, extraParams: string) => {let jsonString: JsonObjType = JSON.parse(extraParams) as JsonObjType; // 通过参数extraParams获取原位置子组件index值this.changeIndex(this.dragIndex, jsonString.insertIndex); // 互换子组件index值this.appInfoList[jsonString.insertIndex].visible = true; // 完成互换后,设置子组件原位置图标不可见
})

高性能知识点

不涉及

模块依赖

@ohos/routermodule(动态路由)

工程结构&模块类型

dragandexchange                  // har类型               
|---pages                                       
|---|---Launcher.ets             // 页面层-方案主页面
|---view                                        
|---|---GridSceneView.ets        // 视图层-Grid拖拽页面             
|---|---ListSceneView.ets        // 视图层-List拖拽页面  
|---model                                     
|---|---AppInfo.ets              // 模型层-App信息模型 

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

《鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.……

在这里插入图片描述

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

在这里插入图片描述

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

在这里插入图片描述

鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

HarmonyOS APP开发教程案列:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/821553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面向对象.day23(多态)

一些基础介绍&#xff1a; 即同一方法可以根据发送对象的不同而采用多种不同的行为方式。 一个对象的实际类型是确定的&#xff0c;但可以指向对象的引用的类型有很多&#xff08;一般是父类或有关系的类&#xff09; 多态存在的条件 有继承关系 子类重写父类方法 父类引用…

Hbase 伪分布式安装 - UbuntuServer2204

Hbase 伪分布式安装 - UbuntuServer2204 安装伪分布Hadoop 安装 zookeeper mkdir /export/data/zookeeper/data -p mkdir /export/data/zookeeper/log -pcd /export/softpackages/ tar -xvf apache-zookeeper-3.8.4-bin.tar.gzmv apache-zookeeper-3.8.4-bin /export/server…

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道&#xff1a;外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了&#xff0c;不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片&#xff0c;这个ADC0809是…

性能测试 Jmeter 非 GUI 模式 -CLI 命令详解

我们在使用Jmeter做性能测试的时候&#xff0c;大部分同学用的是图形化界面进行脚本编写和执行性能测试的。但是其实真正在公司执行性能测试的时候&#xff0c;我们基本上不会用图形化界面去执行测试&#xff0c;这是因为工具渲染这些图形本身会让Jmeter结果存在很多不稳定的因…

FMEA赋能可穿戴设备:打造安全可靠的未来科技新宠!

在科技日新月异的今天&#xff0c;可穿戴设备已成为我们生活中不可或缺的一部分。它们以其便携性、智能化和个性化的特点&#xff0c;深受消费者喜爱。然而&#xff0c;随着可穿戴设备市场的快速扩张&#xff0c;其安全性和可靠性问题也日益凸显。为了确保产品质量&#xff0c;…

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题

旧版本模式&#xff1a; # 以下inputTag任选其一&#xff0c;其他注释掉 inputTag driver.find_element_by_id("value") # 利用ID查找inputTags driver.find_element_by_class_name("value") # 利用类名查找inputTag driver.find_element_by_name(&q…

微信小程序全局配置

全局配置文件及常用的配置项 小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下&#xff1a; ① pages 记录当前小程序所有页面的存放路径 ② window 全局设置小程序窗口的外观 ③ tabBar 设置小程序底部的 tabBar 效果 ④ style 是否启用新版的组件样…

java实现根据sql动态下载数据到excel

需求 由于生产数据库不能直接连接下载数据&#xff0c;所以需要在监控系统上做一个根据sql动态查询并下载数据的功能。 实现思路 写一个接口&#xff0c;传入需要查询的数据库信息和sql&#xff0c;将查询的接口导出到Excel中 实现细节 入参 Data public class ExportDat…

递推算法4(c++)

判断整除 题目描述 一个给定的正整数序列&#xff0c;在每个数之前都插入号或−号后计算它们的和。比如序列&#xff1a;1、2、4共有8种可能的序列&#xff1a; (1) (2) (4) 7 (1) (2) (-4) -1 (1) (-2) (4) 3 (1) (-2) (-4) -5 (-1) (2) (4) 5 (-1) (2…

Mint Ubuntu 使用 docker compose 创建容器

1.安装 docker docker-compose sudo apt install docker.io sudo apt-get install docker-compose sudo usermod -aG docker $USER sudo systemctl daemon-reload sudo systemctl restart docker 2.配置国内 docker 镜像源 修改/etc/docker/daemon.json&#xff0c;增加或者…

图灵奖2023:Avi Wigderson的开创性贡献揭示计算中的随机性和伪随机性

文章目录 每日一句正能量前言背景什么是理论计算机科学&#xff1f;为什么随机性很重要&#xff1f;三篇影响深远的论文Avi Wigderson在计算复杂性理论方面的贡献及其对现代计算的影响Avi Wigderson对随机性和伪随机性在计算中作用的理解及其实际应用Avi Wigderson的学术生涯和…

Spring、SpringMVC、SpringBoot核心知识点(持续更新中)

Spring、SpringMVC、SpringBoot核心知识点&#xff08;持续更新中&#xff09; Spring Bean 的生命周期Spring 的 IOC 与 AOPSpring Bean 循环依赖Spring MVC 处理请求的过程Spring Boot 自动装配原理Spring Boot 启动流程 Spring Bean 的生命周期 参考文章&#xff1a;一文读…

HBase的数据模型与架构

官方文档&#xff1a;Apache HBase – Apache HBase™ Homehttps://hbase.apache.org/ 一、HBase概述 1.概述 HBase的技术源自Google的BigTable论文&#xff0c;HBase建立在Hadoop之上&#xff0c;是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统&#xff0c;用于…

mac上 Sublime Text 无法使用 Package Control

我也不知道什么时候用不了的&#xff0c;平时就是用来看看文本文件&#xff0c;因为觉得这个玩意真的很快 今天想安装一个包&#xff0c;发现 cmd shift P 是出来那个窗口了&#xff0c;但是输入什么都没反应&#xff0c;于是在 github 上找到了解决方案 打开终端执行以下命…

发作性睡病患者应该注意哪些生活调整?

发作性睡病是一种慢性睡眠障碍&#xff0c;患者常常在白天出现不可控制的睡意&#xff0c;甚至突然入睡。这种病症不仅影响患者的日常生活和工作&#xff0c;还可能带来安全隐患。因此&#xff0c;发作性睡病患者需要注意以下生活调整&#xff0c;以改善生活质量并减少潜在风险…

vivado 在硬件管理器中调试 AXI 接口

在硬件管理器中调试 AXI 接口 IP integrator 中的 System ILA IP 支持您在 FPGA 上对设计执行系统内调试。在 Versal 器件上 &#xff0c; System ILA 核已被废 弃。现在 &#xff0c; 在含 AXIS 接口的标准 ILA 中支持接口调试。如需监控 IP integrator 块设计中的…

安达发|体育产业体育装备生产车间APS排产软件

在体育产业中&#xff0c;体育装备的生产是保障运动员成绩和安全的关键一环。随着市场需求的多样化和个性化&#xff0c;传统的生产排程方法已经难以满足现代体育装备生产的复杂性和灵活性。因此&#xff0c;应用高级排产软件&#xff08;APS&#xff09;进行生产计划和控制成为…

微服务中Dubbo通俗易懂讲解及代码实现

当你在微服务架构中需要不同服务之间进行远程通信时&#xff0c;Dubbo是一个优秀的选择。Dubbo是一个高性能的Java RPC框架&#xff0c;它提供了服务注册、发现、调用、负载均衡等功能&#xff0c;使得微服务之间的通信变得简单而高效。 让我们来看一下Dubbo的通俗易懂的解释和…

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型)

RD77MS2 三菱iQ-R系列2轴简单运动模块(SSCNETⅢ/H型) RD77MS2用户手册,RD77MS2外部连接,RD77MS2规格。RD77MS2参数说明&#xff1a;2轴;SSCNETⅢ/H连接&#xff0c;位置控制、同步控制、速度.转矩控制、轨迹控制;控制单位mm、inch、degree、pulse;定位数据600数据轴。 RD77MS2图…

OpenXR手部跟踪接口与VIVE OpenXR扩展详细解析

随着虚拟现实技术的发展&#xff0c;手部跟踪已成为提高沉浸感和交互性的关键技术。OpenXR标准为开发者提供了一套手部跟踪的扩展接口&#xff0c;特别是针对VIVE设备的特定实现。以下是这些接口和类的详细解释&#xff1a; 1. VIVE.OpenXR.Hand VIVE.OpenXR.Hand 是HTC VIVE…