繁体   English   中英

使用图像拖放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM