鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PanGesture)

拖动手势事件,当滑动的最小距离超过设定的最小值时触发拖动手势事件。

说明:

从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

接口

PanGesture(value?: { fingers?: number; direction?: PanDirection; distance?: number } | PanGestureOptions)

参数:

参数名称参数类型必填参数描述
fingersnumber用于指定触发拖动的最少手指数,最小为1指, 最大取值为10指。
默认值:1
取值范围:[1,10]
说明:
当设置的值小于1或不设置时,会被转化为默认值。
directionPanDirection用于指定触发拖动的手势方向,此枚举值支持逻辑与(&)和逻辑或(|)运算。
默认值:PanDirection.All
distancenumber用于指定触发拖动手势事件的最小拖动距离,单位为vp。
默认值:5
说明:
Tabs组件滑动与该拖动手势事件同时存在时,可将distance值设为1,使拖动更灵敏,避免造成事件错乱。
当设定的值小于等于0时,按默认值5处理。

PanDirection枚举说明

名称描述
All所有方向。
Horizontal水平方向。
Vertical竖直方向。
Left向左拖动。
Right向右拖动。
Up向上拖动。
Down向下拖动。
None任何方向都不可触发拖动手势事件。

PanGestureOptions

通过PanGestureOptions对象接口可以动态修改滑动手势识别器的属性,从而避免通过状态变量修改属性(状态变量修改会导致UI刷新)。

PanGestureOptions(value?: { fingers?: number; direction?: PanDirection; distance?: number })

参数:

参数名称参数类型必填参数描述
fingersnumber用于指定触发滑动的最少手指数,最小为1指, 最大取值为10指。
默认值:1
directionPanDirection用于指定设置滑动方向,此枚举值支持逻辑与(&)和逻辑或(|)运算。
默认值:PanDirection.All
distancenumber用于指定触发拖动手势事件的最小拖动距离,单位为vp。
默认值:5
说明:
Tabs组件滑动与该拖动手势事件同时存在时,可将distance值设为1,使拖动更灵敏,避免造成事件错乱。
当设定的值小于等于0时,按默认值(5)处理。

接口

名称功能描述
setDirection(value: PanDirection)设置direction属性。
setDistance(value: number)设置distance属性。
setFingers(value: number)设置fingers属性。

事件

名称功能描述
onActionStart(event: (event?: GestureEvent) => void)Pan手势识别成功回调。
onActionUpdate(event: (event?: GestureEvent) => void)Pan手势移动过程中回调。
fingerList为多根手指时,该回调监听每次只会更新一根手指的位置信息。
onActionEnd(event: (event?: GestureEvent) => void)Pan手势识别成功,手指抬起后触发回调。
onActionCancel(event: () => void)Pan手势识别成功,接收到触摸取消事件触发回调。
说明:
在窗口失焦的时候会触发。

属性

名称类型描述
tag11+string设置Pan手势标志,用于自定义手势判定时区分绑定的手势。

示例

// xxx.ets
@Entry
@Component
struct PanGestureExample {@State offsetX: number = 0@State offsetY: number = 0@State positionX: number = 0@State positionY: number = 0private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.Left | PanDirection.Right })build() {Column() {Column() {Text('PanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY)}.height(200).width(300).padding(20).border({ width: 3 }).margin(50).translate({ x: this.offsetX, y: this.offsetY, z: 0 }) // 以组件左上角为坐标原点进行移动// 左右拖动触发该手势事件.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(() => {this.positionX = this.offsetXthis.positionY = this.offsetYconsole.info('Pan end')}))Button('修改PanGesture触发条件').onClick(() => {// 将PanGesture手势事件触发条件改为双指以任意方向拖动this.panOption.setDirection(PanDirection.All)this.panOption.setFingers(2)})}}
}

示意图:

向左拖动:

zh-cn_image_0000001174264374

点击按钮修改PanGesture触发条件,双指向左下方拖动:

zh-cn_image1_0000001174264374

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

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

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

相关文章

sudo command not found

文章目录 一句话Intro其他操作 一句话 sudo 某命令 改成 sudo -i 某命令 试试。 -i 会把当前用户的环境变量带过去,这样在sudo的时候,有更高的权限,有本用户的环境变量(下的程序命令)。 -i, --login run login shell as the target user; a …

腾讯云学生服务器申请入口、续费优惠价格和常见问题解答

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

Gemini 初体验

1 使用体验 同样需要科学上网。速度很快,而且还不要钱,据说使用太多可能被限流。对于小语种翻译效果比 GPT-4 好,其它还没测试。可通过 ChatBox 界面调用,也可使用 Python 调用。 2 使用 ChatBox 方式调用 在 build with gemin…

【目标分类检测测试指标】

目标分类指标 目标分类指标是指在机器学习和深度学习中,用于衡量模型对目标类别预测准确度的一系列评价标准。以下是一些常见的目标分类指标及其详细说明,并附上Python代码示例(以PyTorch为例): 准确率(Ac…

应用层协议--HTTP

目录 一.HTTP是什么? 二.HTTP的请求和响应 a.请求: b.响应: 三.URL 四.Header 1.Host 2. Content-Length 3. Content-Type a. 请求 b. 响应 4. Referer 5. User-Agent 6. Cookie 一.HTTP是什么? HTTP是一种应用层协议&#xff0c…

springboot实现多线程开发(使用@Async注解,简单易上手)

根据springboot的核心思想便捷开发,使用多线程也变得简单起来,通过一下几个步骤即可实现。 核心注解 EnableAsync将此注解加在启动类上,使项目支持多线程。 Async 使用我们的Async注解在所需要进行多线程的类上即可实现。 配置线程池 …

算法刷题Day1 | 704.二分查找、27.移除元素

目录 0 引言1 二分查找1.1 我的解题1.2 修改后1.3 总结 2 移除元素2.1 暴力求解2.2 双指针法(快慢指针) 🙋‍♂️ 作者:海码007📜 专栏:算法专栏💥 标题:代码随想录算法训练营第一天…

【MySQL】子查询优化、排序优化和覆盖索引

一、子查询优化 子查询可以通过一个SQL语句实现比较复杂的查询。但是子查询的效率不高。原因在于 执行子查询时,MySQL为内层查询语句的结果建立一个临时表,在查询结束后,会撤销这些临时表。这就导致消耗过多的CPU和IO资源,产生大…

AI 训练中 不收敛、欠拟合、过拟合、泛化能力是什么意思?

问题描述: AI 训练中 不收敛、欠拟合、过拟合、泛化能力是什么意思? 解答: 在人工智能(AI)训练过程中,你可能会遇到几个常见的问题,如不收敛、欠拟合、过拟合以及泛化能力的问题。这些问题通…

什么是攻防演练,能给企业带来什么

随着互联网技术的发展和企业信息化程度的提高,企业面临的网络安全威胁越来越多。为了保护企业的信息安全,攻防演练已经成为企业安全运营中不可或缺的一部分。攻击者通常会利用各种方法来破坏企业的安全系统和数据,因此企业需要像攻击者一样思…

C++ primer plus 学习 4.8 newdelete与存储空间

程序4.22 #include<iostream> #include<cstring> using namespace std;// 按照输入的字符串的长度来分配内存空间 char* getname(void){// 最大长度79char tmp[80]; // tmp自动存储&#xff0c;在栈中cout << "输入字符串: ";cin >> tmp;…

数据库自连接

力扣题目链接https://leetcode.cn/problems/employees-earning-more-than-their-managers https://leetcode.cn/problems/duplicate-emails/ 去重 select distinct… 数据库自连接通常在以下情况下需要使用&#xff1a; 层次关系查询&#xff1a;当表中的数据具有层次结构&…

Linux操作系统-05-文件查找与归档压缩

熟练使用find命令进行文件查找 熟练使用gerep命令对文件内容进行查找 熟练使用tar等命令进行文件归档与解压缩 一、文件查找 1、find命令 基本格式 &#xff1a;find 起始目录 查找类型 查找条件 #命令实例 find -name "hello.txt" #查找当前目…

灵活沟通,解决复杂功能需求与费用分歧

在软件开发领域&#xff0c;客户对于复杂功能的需求是司空见惯的事情。然而&#xff0c;当客户表达对此功能的渴望&#xff0c;却不愿支付相应费用时&#xff0c;良好的沟通就显得尤为关键。以下是一些建议&#xff0c;帮助你在这种情况下巧妙处理&#xff0c;达成双方满意的解…

QT 笔记 QGraphicsScene介绍

QT QGraphicsScene类介绍 分别介绍了以下内容&#xff1a; 类说明公共属性公共函数设置相关的函数槽函数信号量Event事件 1.类说明 QGraphicsScene是Qt中用于管理2D图形项&#xff08;QGraphicsItem&#xff09;的场景类。它充当了图形项的容器&#xff0c;负责管理图形项的…

HBuilder X删除之前登录的账号

打开目录 C:\Users\Administrator\AppData\Roaming\HBuilder X 用 HBuilder X 打开文件 prefs 将账号删除 保存文件 重启HBuilder X即可

JS删除数组中元素

在使用JavaScript进行项目开发的过程中&#xff0c;我们经常会有对list中的元素进行删除的需求&#xff0c;此时我们可以使用splice()方法来实现我们的需求。 一、splice方法的功能 splice()方法可以在list任何位置删除任意个元素。这个方法会改变原list 二、splice方法的语法…

获得月份天数

目录 【编程题】获得月份天数 -- 来自牛客网 方案一:if...else语句 方案二&#xff1a;数组&#xff08;最简单&#xff09; 方案三&#xff1a;switch语句 【编程题】获得月份天数 -- 来自牛客网 链接&#xff1a;【BC54】获得月份天数[牛客网] 题目要求:输入年份和月份&am…

7.3 支付模块 - 创建订单、查询订单、通知

支付模块 - 创建订单、查询订单、通知 文章目录 支付模块 - 创建订单、查询订单、通知一、生成支付二维码1.1 数据模型1.1.1 订单表1.1.2 订单明细表1.1.3 支付交易记录表 1.2 执行流程1.3 Dto1.3.1 AddOrderDto 商品订单1.3.2 PayRecordDto支付交易记录扩展字段1.3.3 雪花算法…

机器学习——感知机模型

机器学习系列文章 入门必读&#xff1a;机器学习介绍 文章目录 机器学习系列文章前言1. 感知机1.1 感知机定义1.2 感知机学习策略 2. 代码实现2.1 构建数据2.2 编写函数2.3 迭代 3. 总结 前言 大家好&#xff0c;大家好✨&#xff0c;这里是bio&#x1f996;。这次为大家带来…