HarmonyOS(45) 控件拖动或者拖拽PanGesture

server/2024/10/21 14:34:09/

PanGesture实现控件拖动的效果,通过拖动的坐标位置调用position或者translate方法来更新UI的位置。效果见下图:

在这里插入图片描述
具体代码如下:

// xxx.ets


struct PanGestureExample { offsetX: number = 0 offsetY: number = 0positionX: number = 0positionY: number = 0private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.All })build() {Column() {Column() {Text('PanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY)}.height(200).width(300).padding(20).border({ width: 3 }).margin(50).onClick(()=>{console.info('Pan click')}).translate({ x: this.offsetX, y: this.offsetY }) // 以组件左上角为坐标原点进行移动,此处也可以调用position({ x: this.offsetX, y: this.offsetY }) 方法// 左右拖动触发该手势事件.gesture(PanGesture(this.panOption).onActionStart((event: GestureEvent) => {console.info('Pan start')}).onActionUpdate((event: GestureEvent) => {if (event) {this.offsetX = this.positionX + event.offsetXthis.offsetY = this.positionY + event.offsetY}}).onActionEnd((event: GestureEvent) => {//记录拖动结束前停留的位置this.positionX = this.offsetXthis.positionY = this.offsetYconsole.info('Pan end')}))}}
}

通过这个PanGesture,可以实现更复杂的功能,比如ListView的item排序等,后面会写相关博文出来。
参考资料:
HarmonyOS(40) 悬浮框实现
PanGesture


http://www.ppmy.cn/server/90107.html

相关文章

多线程死锁与单例模式

目录 1.两个线程两把锁的死锁场景 2.构成死锁的四个必要条件: 3.内存可见性问题 4.volatile的作用 5.wait与sleep的区别 6.单例模式 1.两个线程两把锁的死锁场景 1)线程1先针对线程A加锁,线程2针对线程B加锁,线程1在不释放…

uniapp中@click或者@tap多层嵌套的问题解决方法

我们在开发页面的过程中。例如要设计一个九宫格的相册,并且加上删除上传图片和点击图片后预览图片大图的功能例如下图的演示功能。 点击图片后显示大图预览图片,点击x号后要删除掉当前的图片,那么我们设计的时候如果我们代码写成如下的格式 …

Java整理13

1、响应式 将一个普通数据转换成响应式数据2种方式 (1)ref函数 适合单个变量 import {ref} from vue let counter ref(10) 在script中操作ref响应式数据需要用.value 在template中,操作响应式数据无需用.value (2)r…

【 C语言 】 C语言设计模式

一 、C语言和设计模式(继承、封装、多态) C有三个最重要的特点,即继承、封装、多态。我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性。 (1&…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requ…

区块链——hardhat使用

一、引入hardhat yarn add --dev hardhat // 引入验证合约的插件 yarn add --dev nomicfoundation/hardhat-verify 二、创建hardhat项目 yarn hardhat 三、编写我们的合约 四、编译我们的合约 yarn hardhat compile 五、编写脚本部署合约以及验证合约 // 获取hardhat环境对象 c…

c++ 求解质因数(细节详解)

定义 这里先来了解几个定义(如已了解,可直接看下一个板块) 因数:又称为约数,如果整数a除以整数b(b0)的商正好是是整数而没有余数,我们就说b是a的因数 质数:又称为素数…

Java文件拷贝的几种方式

一、前言 文件拷贝(传输)涉及到Java中的输入和输出流(InputStream,OutputStream),FileChannel等知识点,把文件拷贝学明白了,IO流的相关知识点在头脑中也会更加清晰。这篇博客介绍几种…