2016-02-02 138 views
3

我在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

setImageResource設置一個可繪製的ImageView的內容。但是你試圖視圖的ID傳遞給它

int ImageViewID = v.getId(); 
droptarget.setImageResource(ImageViewID); 

相反,你可以試一下:

ImageView imageView = (ImageView)v; 
droptarget.setImageResource(imageView.getDrawable()); 
+0

它不起作用,你在哪裏得到image.getDrawable(); – RexDough

+0

這是輸入錯誤。我已經編輯它imageView.getDrawable() –

0

您可以將繪製對象代碼(INT)(對於R的例如int值被拖動的視圖的ClipData中的id.some_image_view)。然後使用該代碼將正確的Drawable檢索到Dropped-on-View。

droptarget.setImageDrawable(getResources().getDrawable(Integer.parseInt(code))); 

然後強行與重繪:

droptarget.invalidate(); 

這確實需要您覆蓋OnLongClick聽者雖與自己的自定義一個。