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

HarmonyOS
2天前
浏览
收藏 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')
            })
        )
    }
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
长按实现各类振动效果
884浏览 • 1回复 待解决
HarmonyOS 实现按钮长按动画效果
89浏览 • 1回复 待解决
HarmonyOS 客户端拖拽效果如何实现
87浏览 • 1回复 待解决
如何去掉div长按的灰色效果
2559浏览 • 1回复 待解决
HarmonyOS 拖拽不起效果
465浏览 • 1回复 待解决
HarmonyOS grid拖拽效果如何添加动画
36浏览 • 1回复 待解决
HarmonyOS 如何实现列表拖拽
25浏览 • 1回复 待解决
HarmonyOS 如何实现长按点击功能
40浏览 • 1回复 待解决
HarmonyOS如何实现list listitem拖拽
954浏览 • 1回复 待解决
HarmonyOS 组件的拖拽如何实现
52浏览 • 1回复 待解决
HarmonyOS grid拖拽和增删动画效果
40浏览 • 1回复 待解决
Grid如何实现拖拽功能
2669浏览 • 1回复 待解决
HarmonyOS 如何实现拖拽的GridView
18浏览 • 1回复 待解决
HarmonyOS 如何实现分割线拖拽
31浏览 • 1回复 待解决
HarmonyOS 图片拖拽实现
51浏览 • 1回复 待解决