我正在尝试使用Android新的Drag& Drop框架,我遇到了以下问题:
我在一个Activity中运行,因此Class Sources可用。
答案 0 :(得分:1)
你可以尝试很多东西。在我的应用程序中,这就是我做到的:
public boolean onLongClick(View v)
{
dragged_view = v;
removeTransition(v);
ClipData data = ClipData.newPlainText("path", ((TextView)v.findViewById(R.id.file_name)).getText());
v.startDrag(data, new Shadow(v, c), v, 0);
return true;
}
即使长按一下手势也会触发拖动。我有一个名为View
的全局dragged_view
变量,以便我可以在ACTION_DROP
上引用它。
我做的另一件事是将View
作为startDrag()
方法中的local state object传递(这是第3个参数)。然后我可以通过getLocalState()
获取它并将其用作参考,如此代码段中所示:
item_drag_listener = new View.OnDragListener(){
public boolean onDrag(View v, DragEvent event){
if (event.getLocalState() == v)
return true;
overlays = v.findViewById(R.id.copy_move_overlays);
switch (event.getAction()){
case DragEvent.ACTION_DRAG_ENTERED:
overlays.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_EXITED:
overlays.setVisibility(View.INVISIBLE);
break;
case DragEvent.ACTION_DRAG_STARTED:
return true;
case DragEvent.ACTION_DROP:
return true;
}
return false;
}
};
答案 1 :(得分:0)
我通过引入带变量
的DragHandler类来实现拖放视图View isDraggedNow;
这个变量allwasy包含一个拖动的视图,因此每个类都可以轻松地将它带到DragEvent.ACTION_DRAG_ENTERED