拖放功能适配
从Android 7.0开始支持多窗口模式,用户可以通过拖放手势,将数据在不同Activity间拖放,方便在应用间移动数据。该功能基于Android Drag/Drop 框架,通过拖放事件、拖放监听实现。
1. 开始拖放
Ø 开始执行拖放操作时,来源应用必须设置 DRAG_FLAG_GLOBAL 标志,以表示用户可以将数据拖动到其他应用。
Ø 建议使用View.OnLongClickListener.onLongClick作为开始拖放的动作
Ø 创建ClipData和 ClipData.Item来移动数据
Ø 由于拖放数据跨应用移动,所以应用需要使用内容 URI 共享对数据的访问权限,来源应用必须依据目标应用的读写权限设置以下标志:
Ø 调用View.startDragAndDrop()通知系统开始拖动,提供拖动的数据、绘制拖动阴影的回调。
2. 拖放响应
通过实现拖动事件监听器View.OnDragListener或 onDragEvent回调方法来接收拖动事件 。如果View对象同时具有监听器和回调方法,系统将首先调用监听器。当监听器器返回false,才会调用回调方法。
Ø 创建监听对象: View.OnDragListener
Ø 使用View的setOnDragListener()方法为View设置拖动事件监听对象
Ø 监听器应通过调用getAction()来获得操作类型的响应。
Ø 目标应用必须在用户拖动数据到应用前调用 requestDragAndDropPermissions()
Ø 如果目标应用不再需要访问拖动数据,可以主动调用 requestDragAndDropPermissions. release()将对象释放。或者,在销毁Activity时会释放权限。
3. 参考文档
拖放具体实现方式,请参考Android 官网:
多窗口拖放:
https://developer.android.google.cn/guide/topics/ui/multi-window#dnd
多窗口下拖放权限:
https://developer.android.google.cn/guide/topics/ui/drag-drop#DragPermissionsMultiWindow
拖放框架:
https://developer.android.google.cn/guide/topics/ui/drag-drop
如果有问题请发送邮件至 rdtpservice@samsung.com
.;.;.