鸿蒙开发-UI-交互事件-手势事件

鸿蒙开发-UI-图形-绘制自定义图形

鸿蒙开发-UI-图形-页面内动画

鸿蒙开发-UI-图形-组件内转场动画

鸿蒙开发-UI-图形-弹簧曲线动画

鸿蒙开发-UI-交互事件-通用事件

鸿蒙开发-UI-交互事件-键鼠事件

鸿蒙开发-UI-交互事件-焦点事件

文章目录

前言

一、绑定手势方法

1. gesture

2. priorityGesture

3. parallelGesture

二、单一手势

三、组合手势

1. 顺序识别

2. 并行识别

3. 互斥识别

总结


前言

上文学习鸿蒙开发UI交互焦点事件,了解焦点、获焦、失焦、走焦等相关概念,详细学习了走焦的相关规则,以及设置组件是否获焦的接口,最后学习了自定义TAB键的走焦顺序,本文将学习手势事件。

一、绑定手势方法

通过给各个组件绑定不同的手势事件,并设计事件的响应方式,当手势识别成功时,ArkUI框架将通过事件回调通知组件手势识别的结果。

1. gesture

通用的一种手势绑定方法,可以将手势绑定到对应的组件上

接口

.gesture(gesture: GestureType, mask?: GestureMask)

代码示例

@Entry
@Component
struct Index {build() {Column() {Text('Gesture').fontSize(28)
//step1: 采用gesture手势绑定方法绑定点击手势TapGesture到Text组件上.gesture(TapGesture().onAction(() => {console.info('TapGesture is onAction');}))}.height(200).width(250)}
}

2. priorityGesture

带优先级的手势绑定方法,可以在组件上绑定优先识别的手势。当父组件和子组件使用gesture绑定同类型的手势时,子组件优先识别通过gesture绑定的手势。当父组件使用priorityGesture绑定与子组件同类型的手势时,父组件优先识别通过priorityGesture绑定的手势。

接口

.priorityGesture(gesture: GestureType, mask?: GestureMask)。

代码示例

@Entry
@Component
struct Index {build() {Column() {
//step1:采用gesture手势绑定方法绑定点击手势TapGesture到子组件TextText('Gesture').fontSize(28).gesture(TapGesture().onAction(() => {console.info('Text TapGesture is onAction');}))}.height(200).width(250)
//step2:采用priorityGesture手势绑定方法绑定点击手势TapGesture到父组件Column,点击文本区域会忽略Text组件的TapGesture手势事件,优先响应父组件Column的TapGesture手势事件.priorityGesture(TapGesture().onAction(() => {console.info('Column TapGesture is onAction');}), GestureMask.IgnoreInternal)}
}

3. parallelGesture

并行的手势绑定方法,可以在父子组件上绑定可以同时响应的相同手势。默认情况手势事件为非冒泡事件,当父子组件绑定相同的手势时,最多只有一个组件的手势事件能够获得响应。当父组件绑定了并行手势parallelGesture时,父子组件相同的手势事件都可以触发,实现类似冒泡效果。

接口

.parallelGesture(gesture: GestureType, mask?: GestureMask)

代码示例

@Entry
@Component
struct Index {build() {Column() {
//step1:采用gesture手势绑定方法绑定点击手势TapGesture到子组件TextText('Gesture').fontSize(28).gesture(TapGesture().onAction(() => {console.info('Text TapGesture is onAction');}))}.height(200).width(250)
//step2:采用parallelGesture手势绑定方法绑定点击手势TapGesture到父组件Column,点击文本区域会同时响应父组件Column和子组件Text的TapGesture手势事件.parallelGesture(TapGesture().onAction(() => {console.info('Column TapGesture is onAction');}), GestureMask.IgnoreInternal)}
}

注:当父组件和子组件同时绑定单击手势事件和双击手势事件时,父组件和子组件均只响应单击手势事件

二、单一手势

三、组合手势

组合手势由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型

接口

//mode:必选参数,为GestureMode枚举类。用于声明该组合手势的类型。
//gesture:必选参数,为由多个手势组合而成的数组。用于声明组合成该组合手势的各个手势。
GestureGroup(mode:GestureMode, ...gesture:GestureType[])

1. 顺序识别

GestureMode为Sequence。顺序识别组合手势将按照手势的注册顺序识别手势,直到所有的手势识别成功。当顺序识别组合手势中有一个手势识别失败时,所有的手势识别失败。

2. 并行识别

GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。

代码示例

@Entry
@Component
struct Index {@State count1: number = 0;@State count2: number = 0;build() {Column() {Text('parallel gesture\n' + 'tapGesture count is 1:' + this.count1 + '\ntapGesture count is 2:' + this.count2 + '\n').fontSize(28)}.height(200).width(250)
//step1:定义组合手势为并行并别,单击手势识别成功后,若在规定时间内再次点击,双击手势也会识别成功.gesture(GestureGroup(GestureMode.Parallel,TapGesture({ count: 1 }).onAction(() => {this.count1++;}),TapGesture({ count: 2 }).onAction(() => {this.count2++;})))}
}

注:

1. 当由单击手势和双击手势组成一个并行识别组合手势后,在区域内进行点击时,单击手势和双击手势将同时进行识别。

2. 当只有单次点击时,单击手势识别成功,双击手势识别失败。

3. 当有两次点击时,若两次点击相距时间在规定时间内(默认规定时间为300毫秒),触发两次单击事件和一次双击事件。

4. 当有两次点击时,若两次点击相距时间超出规定时间,触发两次单击事件不触发双击事件。

3. 互斥识别

GestureMode为Exclusive。互斥识别组合手势中注册的手势将同时进行识别,若有一个手势识别成功,则结束手势识别,其他所有手势识别失败。

代码示例

@Entry
@Component
struct Index {@State count1: number = 0;@State count2: number = 0;build() {Column() {Text('parallel gesture\n' + 'tapGesture count is 1:' + this.count1 + '\ntapGesture count is 2:' + this.count2 + '\n').fontSize(28)}.height(200).width(250)
//step1:定义组合手势为互斥并别,单击手势识别成功后,双击手势会识别失败.gesture(GestureGroup(GestureMode.Exclusive,TapGesture({ count: 1 }).onAction(() => {this.count1++;}),TapGesture({ count: 2 }).onAction(() => {this.count2++;})))}
}

注:

1. 当由单击手势和双击手势组成一个互斥识别组合手势后,在区域内进行点击时,单击手势和双击手势将同时进行识别。

2. 当只有单次点击时,单击手势识别成功,双击手势识别失败。

3. 当有两次点击时,单击手势在第一次点击时即宣告识别成功,此时双击手势已经失败。即使在规定时间内进行了第二次点击,双击手势事件也不会进行响应,此时会触发单击手势事件的第二次识别成功。


总结

本文学习手势事件,学习绑定手势的三种方法,以及单一手势和组合手势的使用方法,下文将学习鸿蒙开发web相关的知识。

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

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

相关文章

智能算法-遗传算法 学习笔记

适应度的计算可类别为神经网络的目标函数,但此算法属于无监督学习,宏观来讲为搜寻最优解(梯度)的方式不同? 但神经网络中好像并不存在变异操作(参数矩阵突变)? 交叉的话残差网络ResN…

竞赛 python+opencv+机器学习车牌识别

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器学习的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:3分 该项目较为新颖,适…

为什么上级总能提出问题和风险

首先要搞清楚什么是风险,风险就是目标与实际的GAP,所谓能发现风险就是对目标的理解更深入,对目标的实现具有更高要求,GAP越大能发现的风险越多 💡目标不同: 1.高层领导关注长期指标,比如他会看…

【Java面试题】计算机网络

文章目录 1.计算机网络基础1.1网络分层模型/OSI七层模型是什么?1.2TCP/IP四层模型是什么?每一层的作用?1.2.1TCP四层模型?1.2.2为什么网络要分层? 1.2常见网络协议1.2.1应用层常见的协议1.2.2网络层常见的协议 2.HTTP2…

OSCP靶场--Extplorer

OSCP靶场–Extplorer 考点(信息收集linux磁盘组用户提权) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.194.16 -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-26 20:21 EDT Nmap scan report for 19…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器,可以提高 cs…

第一个JDBC程序

一、JDBC的概念: JDBC 是 Java DataBase Connectivity (Java 数据连接)技术的简称,是一种可用于执行 SQL 语句的 Java API。它由一些 java 语言编写的类和接口组成;程序员通过使用 jdbc 可以方便地将 SQL 语句传送给几乎任何一种数据库。 二…

通过一篇文章让你了解C++是什么

C是什么 前言一、什么是C二、C的发展史三、C的重要性3.1 计算机语言的使用广泛度3.2 在工作领域3.3公司需求 四、公司是如何面试C的 前言 C是一种编程语言,它在20世纪80年代作为C语言的扩展而开发出来。它是一种编译型语言,这意味着用C编写的程序在执行…

可以放在桌面上使用的便签有哪款?怎么挑选桌面便签软件

在日常工作和生活中,一款能够放在桌面使用的便签软件,无疑会极大地提升我们的工作效率和便捷性。那么,网上究竟有哪些值得推荐的桌面便签app呢?今天,我要为大家介绍一款既实用又便捷的桌面便签软件——敬业签。 这款软…

C++引用学习day2

思维导图 定义一个矩形类(Rectangle),包含私有成员:长(length)、宽(width), 定义成员函数: 设置长度:void set_l(int l) 设置宽度:void set_w(int w) 获取长度&#…

java 8 stream api将List<T>转换成树形结构

1、新建实体类 package com.example.springboot3.entity;import lombok.Builder; import lombok.Data;import java.util.List;Data Builder public class Menu {/*** id*/public Integer id;/*** 名称*/public String name;/*** 父id ,根节点为0*/public Integer p…

项目资源管理——降本增效(上)

什么是项目资源 一切具有使用价值,可为项目接受和利用,且属于项目发展过程所需要的客观存在的资源。 包括实物资源和团队资源(人力资源)。 项目资源管理的主要目的是确保项目所需的资源得到有效的规划、分配和控制,以支…