1. DragShadowBuilder有三个methods

其中,

public void onProvideShadowMetrics (Point shadowSize, Point shadowTouchPoint)

确定shadow大小及位置,shadowTouchPoint是相对于该view的位置,我的要求是设为touch.set(0, height/2)。

2. 数据传递

通过clipdata(ClipData.item)传递数据(有三种类型,  simple CharSequence of text, a single Intent object, or a Uri)

在被drag的对象的onLongClickListener监听到longclick后,通过view.startDrag(dragData,myShadowBuilder,null(local data),0(flags))将数据打包send给system

等待接收drag的对象一直监听(setOnDragListener),通过DragEvent的getAction()判断action类型并进行相应操作,

在start的时候,判断该view是否接收dragged data

在Drop的时候,新建ClipData对象接收数据,

在end的时候,通过event.getResult()判断drop是否成功

3. ClipData构造函数及new一个ClipData对象

A ClipData contains a ClipDescription, which describes important meta-data about the clip.

每个ClipData都含有一个ClipDescription,用来描述关于这个clip的重要meta-data。

MimeTypes??

有两个构造函数:

ClipData(CharSequence label, String[] mineTypes, ClipData.Item item)

ClipData(ClipDescription description, ClipData.Item item)

常用第一种,官方doc给出的示例第二参数报错。

String[] mineTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN, ClipDescription.MIMETYPE_TEXT_Intent, ClipDescription.MIMETYPE_TEXT_URLIST};

可以解决问题

ClipData是ClipData.Item的数组,有ClipData.Item item = event.getClipData().getItemAt(0);

相关文章:

  • 2021-09-02
  • 2022-01-31
  • 2021-11-19
  • 2022-12-23
  • 2021-10-24
  • 2022-01-22
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2019-02-13
  • 2021-12-25
  • 2021-11-22
  • 2021-07-30
  • 2022-12-23
  • 2021-08-03
相关资源
相似解决方案