我在android studio上有这个拖放功能,它可以使用图像视图。一旦我使用OnLongListener选择图像视图并将其放到作为目标的空白图像视图中,目标图像视图应该更改为我抓取的图像视图。
我的代码
img6.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
DragShadow dragshadow = new DragShadow(v);
ClipData data = ClipData.newPlainText("", "");
v.startDrag(data, dragshadow, v, 0);
return false;
}
});
droptarget.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
int dragEvent = event.getAction();
int ImageViewID = v.getId();
switch (dragEvent) {
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
droptarget.setImageResource(ImageViewID);
break;
}
return true;
}
});
setImageResource出现错误。
答案 0 :(得分:0)
setImageResource
将drawable设置为ImageView的内容。但是你试图将视图的id传递给它
int ImageViewID = v.getId();
droptarget.setImageResource(ImageViewID);
相反,你可以尝试一下:
ImageView imageView = (ImageView)v;
droptarget.setImageResource(imageView.getDrawable());
答案 1 :(得分:0)
您可以在拖动视图的ClipData中发送Drawable代码(int)(例如R.id.some_image_view的int值)。然后使用该代码检索Dropped-on-View的正确Drawable。
droptarget.setImageDrawable(getResources().getDrawable(Integer.parseInt(code)));
然后强制重绘:
droptarget.invalidate();
这确实要求您使用自己的自定义监听器覆盖OnLongClick监听器。