[英]Drag and Drop using images
我在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出现错误。
setImageResource
将drawable设置为ImageView的内容。 但是你试图将视图的id传递给它
int ImageViewID = v.getId();
droptarget.setImageResource(ImageViewID);
相反,你可以尝试一下:
ImageView imageView = (ImageView)v;
droptarget.setImageResource(imageView.getDrawable());
您可以在拖动的View的ClipData中发送Drawable代码(int)(例如R.id.some_image_view的int值)。 然后使用该代码检索Dropped-on-View的正确Drawable。
droptarget.setImageDrawable(getResources().getDrawable(Integer.parseInt(code)));
然后强制重绘:
droptarget.invalidate();
这确实需要您使用自己的自定义监听器来覆盖OnLongClick监听器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.