鸿蒙HarmonyOS实战-ArkUI事件(手势方法)

🚀一、手势方法

应用程序的手势操作是指在移动设备上使用手指或手势进行与应用程序交互的方式。手势操作可以包括点击、滑动、双击、捏合等动作,用于实现不同的功能和操作。

HarmonyOS中常见的手势操作及其功能:

🔎1.gesture(常规手势绑定方法)

接口说明:

复制代码
.gesture(gesture: GestureType, mask?: GestureMask)

案例:

复制代码
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        // 采用gesture手势绑定方法绑定TapGesture
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
  }
}

🔎2.priorityGesture(带优先级的手势绑定方法)

在HarmonyOS中,可以使用priorityGesture方法来实现带有优先级的手势绑定。具体描述如下:

  • priorityGesture是一种带有优先级的手势绑定方法,用于在组件上绑定优先识别的手势。
  • 默认情况下,当父组件和子组件使用gesture方法绑定相同类型的手势时,子组件优先识别通过gesture绑定的手势。
  • 当父组件使用priorityGesture方法绑定与子组件同类型的手势时,父组件优先识别通过priorityGesture绑定的手势。

当父组件Column和子组件Text同时绑定TapGesture手势时,如果父组件使用priorityGesture绑定了TapGesture手势,那么父组件会优先响应这个手势,而子组件只有在父组件不处理该手势时才能响应它。

接口说明:

复制代码
.priorityGesture(gesture: GestureType, mask?: GestureMask)。

案例:

复制代码
// xxx.ets
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('Text TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
    // 设置为priorityGesture时,点击文本区域会忽略Text组件的TapGesture手势事件,优先响应父组件Column的TapGesture手势事件
    .priorityGesture(
      TapGesture()
        .onAction(() => {
          console.info('Column TapGesture is onAction');
        }), GestureMask.IgnoreInternal)
  }
}

🔎3.parallelGesture(并行手势绑定方法)

在默认情况下,手势事件是非冒泡事件,当父子组件绑定相同的手势时,父子组件绑定的手势事件会发生竞争,最多只有一个组件的手势事件能够获得响应。

然而,当父组件使用parallelGesture方法绑定并行手势时,父子组件绑定的相同手势事件都可以触发,实现了类似冒泡效果。这意味着在这种情况下,父组件和子组件可以同时响应绑定的手势事件。

通过使用parallelGesture方法,可以实现父子组件之间相同手势事件的并行触发,使得多个组件都能够处理相同的手势操作,提供更灵活和多样化的交互效果。

接口说明:

复制代码
.parallelGesture(gesture: GestureType, mask?: GestureMask)

案例:

复制代码
// xxx.ets
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('Text TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
    // 设置为parallelGesture时,点击文本区域会同时响应父组件Column和子组件Text的TapGesture手势事件
    .parallelGesture(
      TapGesture()
        .onAction(() => {
          console.info('Column TapGesture is onAction');
        }), GestureMask.Normal)
  }
}

注意GestureMask=GestureMask.IgnoreInternal时只会触发父组件的

🚀写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY
相关推荐
爱笑的眼睛116 小时前
深入浅出 HarmonyOS 应用开发:ArkTS 语法精要与实践
华为·harmonyos
爱笑的眼睛117 小时前
HarmonyOS应用开发深度解析:ArkTS语法精要与UI组件实践
华为·harmonyos
Kisang.9 小时前
【HarmonyOS】消息通知
华为·harmonyos
安卓开发者10 小时前
鸿蒙NEXT网络通信实战:使用HTTP协议进行网络请求
网络·http·harmonyos
爱笑的眼睛1111 小时前
HarmonyOS ArkTS深度解析:构建高性能声明式UI应用
华为·harmonyos
TiZizzz14 小时前
HarmonyOS应用开发 - strip编译配置优先级
华为·harmonyos
徐归阳15 小时前
DevEco Studio安装
编辑器·harmonyos
小白学鸿蒙1 天前
OpenHarmony(开源鸿蒙)小白入门教程
harmonyos·鸿蒙·鸿蒙系统
安卓开发者2 天前
鸿蒙NEXT网络通信进阶:全方位优化HTTP传输性能
http·华为·harmonyos
爱笑的眼睛112 天前
HarmonyOS 应用开发深度解析:ArkTS 状态管理与渲染控制的艺术
华为·harmonyos