三星远程开发测试平台

反馈 注册 登录

拖放功能适配

从Android 7.0开始支持多窗口模式,用户可以通过拖放手势,将数据在不同Activity间拖放,方便在应用间移动数据。该功能基于Android Drag/Drop 框架,通过拖放事件、拖放监听实现。


image.png

1.   开始拖放

Ø  开始执行拖放操作时,来源应用必须设置 DRAG_FLAG_GLOBAL 标志,以表示用户可以将数据拖动到其他应用。

Ø  建议使用View.OnLongClickListener.onLongClick作为开始拖放的动作

Ø  创建ClipData和 ClipData.Item来移动数据

Ø  由于拖放数据跨应用移动,所以应用需要使用内容 URI 共享对数据的访问权限,来源应用必须依据目标应用的读写权限设置以下标志:

Ÿ   DRAG_FLAG_GLOBAL_URI_READ 

Ÿ   DRAG_FLAG_GLOBAL_URI_WRITE 


Ø  调用View.startDragAndDrop()通知系统开始拖动,提供拖动的数据、绘制拖动阴影的回调。


image.png


2.   拖放响应

通过实现拖动事件监听器View.OnDragListener或 onDragEvent回调方法来接收拖动事件 。如果View对象同时具有监听器和回调方法,系统将首先调用监听器。当监听器器返回false,才会调用回调方法。

 

Ø  创建监听对象:  View.OnDragListener

Ø  使用View的setOnDragListener()方法为View设置拖动事件监听对象

Ø  监听器应通过调用getAction()来获得操作类型的响应。


image.png


Ø  目标应用必须在用户拖动数据到应用前调用 requestDragAndDropPermissions()

Ø  如果目标应用不再需要访问拖动数据,可以主动调用  requestDragAndDropPermissions. release()对象释放。或者,在销毁Activity时会释放权限。


image.png


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 


.;.;.;.;.;.;