写点什么

鸿蒙系统拖拽事件简易使用

作者:flfljh
  • 2024-12-24
    湖南
  • 本文字数:1112 字

    阅读完需:约 4 分钟

  1. 支持版本与资源限制

  2. 从 API Version 7 开始支持拖拽事件,后续版本可能有新增内容并标记起始版本。应用本身预置的资源文件仅支持本地应用内拖拽。

  3. 默认支持组件及属性设置

  4. ArkUI 框架对部分组件实现了默认拖拽能力。默认支持拖出能力的组件有 Search、TextInput 等,其 draggable 属性默认为 true(Text、TextInput 等文本类组件对选中文本拖拽时不支持背板图自定义,且与某些功能结合时不支持拖拽);默认支持拖入能力的组件有 Search、TextInput 等(目标组件可响应拖入数据)。其他组件需将 draggable 属性设为 true,并在相关接口实现数据传输内容。

  5. 事件回调函数及参数说明

  6. onDragStart:第一次长按(>=500ms)且手指移动距离(>=10vp)绑定组件时触发回调。开发者可设置自定义背板图或拖拽数据,优先执行开发者设置。返回值为 CustomBuilder 或 DragItemInfo 类型,表示拖拽过程中显示的组件信息。参数包括 event(拖拽事件信息)和 extraParams(额外信息,需解析为 Json 格式)。

  7. onDragEnter:拖拽进入组件范围且监听 onDrop 事件时触发回调,参数同 onDragStart 中的 event 和 extraParams。

  8. onDragMove:拖拽在组件范围内移动且监听 onDrop 事件时触发回调,参数同 onDragEnter。

  9. onDragLeave:拖拽离开组件范围且监听 onDrop 事件时触发回调,参数同 onDragEnter。

  10. onDrop:组件作为拖拽释放目标,停止拖拽时触发回调。若未主动设置拖拽接收结果,系统按成功处理。参数同 onDragEnter。

  11. onDragEnd:组件拖拽结束后触发回调,参数中的 event 不包括拖拽点坐标,其他同 onDragEnter。

  12. onPreDrag(API 12+):组件在拖拽发起前不同阶段触发回调,参数为 PreDragStatus 类型,表示当前阶段状态。

  13. 相关数据类型及方法

  14. DragItemInfo:用于设置拖拽过程中的显示信息,包括 pixelMap(设置图片)、builder(设置自定义组件,若设置 pixelMap 则忽略)、extraInfo(描述)。

  15. extraParams:返回组件拖拽额外信息,可解析出 selectedIndex(在父容器子元素拖拽时表示被拖子元素序号)和 insertIndex(在 List 组件中放下时表示插入位置序号)。

  16. DragEvent:具有多个属性和方法,如 useCustomDropAnimation(控制落位动效)、dragBehavior(切换复制和剪贴模式角标显示)、setData(设置拖拽数据)、getData(获取拖拽数据)等。

  17. DragResult 枚举:包括 DRAG_SUCCESSFUL(成功)、DRAG_FAILED(失败)、DRAG_CANCELED(取消)、DROP_ENABLED(允许落入)、DROP_DISABLED(不允许落入)。

  18. DragBehavior:有 COPY(复制)和 MOVE(剪切)两种,用于描述数据处理方式。

  19. PreDragStatus 枚举(API 12+):表示拖拽前不同阶段,如 ACTION_DETECTING_STATUS(手势启动)、READY_TO_TRIGGER_DRAG_ACTION(准备完成)等。


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙系统拖拽事件简易使用_flfljh_InfoQ写作社区