拖拽事件

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

  1. 支持版本与资源限制
    • 从 API Version 7 开始支持拖拽事件,后续版本可能有新增内容并标记起始版本。应用本身预置的资源文件仅支持本地应用内拖拽。
  2. 默认支持组件及属性设置
    • ArkUI 框架对部分组件实现了默认拖拽能力。默认支持拖出能力的组件有 Search、TextInput 等,其 draggable 属性默认为 true(Text、TextInput 等文本类组件对选中文本拖拽时不支持背板图自定义,且与某些功能结合时不支持拖拽);默认支持拖入能力的组件有 Search、TextInput 等(目标组件可响应拖入数据)。其他组件需将 draggable 属性设为 true,并在相关接口实现数据传输内容。
  3. 事件回调函数及参数说明
    • onDragStart:第一次长按(>=500ms)且手指移动距离(>=10vp)绑定组件时触发回调。开发者可设置自定义背板图或拖拽数据,优先执行开发者设置。返回值为 CustomBuilder 或 DragItemInfo 类型,表示拖拽过程中显示的组件信息。参数包括 event(拖拽事件信息)和 extraParams(额外信息,需解析为 Json 格式)。
    • onDragEnter:拖拽进入组件范围且监听 onDrop 事件时触发回调,参数同 onDragStart 中的 event 和 extraParams。
    • onDragMove:拖拽在组件范围内移动且监听 onDrop 事件时触发回调,参数同 onDragEnter。
    • onDragLeave:拖拽离开组件范围且监听 onDrop 事件时触发回调,参数同 onDragEnter。
    • onDrop:组件作为拖拽释放目标,停止拖拽时触发回调。若未主动设置拖拽接收结果,系统按成功处理。参数同 onDragEnter。
    • onDragEnd:组件拖拽结束后触发回调,参数中的 event 不包括拖拽点坐标,其他同 onDragEnter。
    • onPreDrag(API 12+):组件在拖拽发起前不同阶段触发回调,参数为 PreDragStatus 类型,表示当前阶段状态。
  4. 相关数据类型及方法
    • DragItemInfo:用于设置拖拽过程中的显示信息,包括 pixelMap(设置图片)、builder(设置自定义组件,若设置 pixelMap 则忽略)、extraInfo(描述)。
    • extraParams:返回组件拖拽额外信息,可解析出 selectedIndex(在父容器子元素拖拽时表示被拖子元素序号)和 insertIndex(在 List 组件中放下时表示插入位置序号)。
    • DragEvent:具有多个属性和方法,如 useCustomDropAnimation(控制落位动效)、dragBehavior(切换复制和剪贴模式角标显示)、setData(设置拖拽数据)、getData(获取拖拽数据)等。
    • DragResult 枚举:包括 DRAG_SUCCESSFUL(成功)、DRAG_FAILED(失败)、DRAG_CANCELED(取消)、DROP_ENABLED(允许落入)、DROP_DISABLED(不允许落入)。
    • DragBehavior:有 COPY(复制)和 MOVE(剪切)两种,用于描述数据处理方式。
    • PreDragStatus 枚举(API 12+):表示拖拽前不同阶段,如 ACTION_DETECTING_STATUS(手势启动)、READY_TO_TRIGGER_DRAG_ACTION(准备完成)等。
posted @   flfljh2024  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示