HarmonyOS 如何实现工具条长按拖拽效果

HarmonyOS
2024-12-24 18:21:47
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

拖拽事件请参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-events-drag-drop-V5#dragevent

GestureGroup参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-combined-gestures-V5

LongPressGesture参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-gestures-longpressgesture-V5#%E6%8E%A5%E5%8F%A3

PanGesture参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-gestures-pangesture-V5#%E6%8E%A5%E5%8F%A3

// xxx.ets
@Entry
@Component
struct GestureGroupExample {
  @State offsetX: number = 0
  @State offsetY: number = 0
  @State positionX: number = 0
  @State positionY: number = 0

  build() {
    Column() {
      Image($r('app.media.app_icon'))
        .translate({ x: this.offsetX, y: this.offsetY, z: 0 })
        .height(100)
        .width(100)
        .draggable(false)
        .gesture(
          // 以下组合手势为顺序识别,当长按手势事件未正常触发时则不会触发拖动手势事件
          GestureGroup(GestureMode.Sequence,
            LongPressGesture({ repeat: true })
              .onAction((event?: GestureEvent) => {
                console.info('LongPress onAction')
              }),
            PanGesture()
              .onActionStart(() => {
                console.info('pan start')
              })
              .onActionUpdate((event?: GestureEvent) => {
                if (event) {
                  this.offsetX = this.positionX + event.offsetX
                  this.offsetY = this.positionY + event.offsetY
                }
                console.info('pan update')
              })
              .onActionEnd(() => {
                this.positionX = this.offsetX
                this.positionY = this.offsetY
                console.info('pan end')
              })
          )
            .onCancel(() => {
              console.info('sequence gesture canceled')
            })
        )
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
分享
微博
QQ
微信
回复
2024-12-24 20:16:30
相关问题
HarmonyOS Vibration如何实现长按震动效果
1023浏览 • 1回复 待解决
长按实现各类振动效果
1593浏览 • 1回复 待解决
HarmonyOS 客户端拖拽效果如何实现
1027浏览 • 1回复 待解决
HarmonyOS 实现按钮长按动画效果
1100浏览 • 1回复 待解决
HarmonyOS 拖拽不起效果
906浏览 • 1回复 待解决
HarmonyOS grid拖拽效果如何添加动画
922浏览 • 1回复 待解决
如何去掉div长按的灰色效果
3102浏览 • 1回复 待解决
HarmonyOS 如何实现列表拖拽
763浏览 • 1回复 待解决
HarmonyOS 如何实现长按点击功能
916浏览 • 1回复 待解决
HarmonyOS如何实现list listitem拖拽
1791浏览 • 1回复 待解决
HarmonyOS 组件的拖拽如何实现
892浏览 • 1回复 待解决
HarmonyOS grid拖拽和增删动画效果
812浏览 • 1回复 待解决
Grid如何实现拖拽功能
3395浏览 • 1回复 待解决
HarmonyOS 图片拖拽实现
889浏览 • 1回复 待解决
HarmonyOS 如何实现拖拽的GridView
568浏览 • 1回复 待解决
HarmonyOS 如何实现分割线拖拽
522浏览 • 1回复 待解决