鸿蒙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
相关推荐
@海~涛2 小时前
鸿蒙OpenHarmony
华为·harmonyos
zhongcx7 小时前
鸿蒙应用示例:镂空效果实现教程
harmonyos
训山8 小时前
【11】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-模块化语法与自定义组件
笔记·学习·华为·harmonyos·鸿蒙系统
helloxmg9 小时前
鸿蒙harmonyos next flutter混合开发之开发package
flutter·华为·harmonyos
zhongcx1 天前
鸿蒙应用示例:ArkTS UI框架中的文本缩进技巧
harmonyos
东林知识库1 天前
鸿蒙NEXT开发-自定义构建函数(基于最新api12稳定版)
华为·harmonyos
裴云飞1 天前
鸿蒙性能优化之布局优化
性能优化·harmonyos
zhongcx1 天前
鸿蒙应用示例:ArkTS中设置颜色透明度与颜色渐变方案探讨
harmonyos
PlumCarefree2 天前
mp4(H.265编码)转为本地RTSP流
音视频·harmonyos·h.265
鸿蒙自习室2 天前
鸿蒙网络管理模块04——网络连接管理
华为·harmonyos·鸿蒙·媒体