2011-07-26 7 views
1

Hii 모두 3.0.i에서 드래그 앤 드롭을 구현하려고 시도했지만 개발자 사이트에서 제공된 예제를 사용했지만 삭제하는 동안 문제가 발생했습니다. 여기 내 코드는 이미지를 드래그 할 수 있습니다. 볼 수 있지만 그것을 드롭 수 없습니다. 어떤 plz 나에게 문제가 무엇인지 말해 또는 샘플 코드를 제공 ??3.0에서 끌어서 놓기

setContentView(R.layout.main); 
    iv=(ImageView)findViewById(R.id.iv); 
    lv=(RelativeLayout)findViewById(R.id.lv); 
    lv.setOnDragListener(this); 
    iv.setTag("HELLOOO"); 
    iv.setOnLongClickListener(this); 
} 
     public boolean onDrag(View v, DragEvent event) { 
    CharSequence dragData; 
    switch(event.getAction()){ 
    case DragEvent.ACTION_DRAG_STARTED: 
     break; 
    case DragEvent.ACTION_DRAG_ENTERED: 
     insideOfMe = true; 
     break; 
    case DragEvent.ACTION_DRAG_LOCATION: 
     break; 
    case DragEvent.ACTION_DRAG_ENDED: 
     break; 
    case DragEvent.ACTION_DRAG_EXITED: 
     insideOfMe = false; 
     break; 
    case DragEvent.ACTION_DROP: 
     break; 
    } 

    return true; 
} 
public static class Shadow extends View.DragShadowBuilder{ 
    Drawable d; 
    public Shadow(View v,Context context){ 
     super(v); 
    d=context.getResources().getDrawable(R.drawable.icon); 
    } 

    @Override 
    public void onProvideShadowMetrics(Point shadowSize, 
      Point shadowTouchPoint) { 
     // TODO Auto-generated method stub 
        int width,height; 
        width=getView().getWidth(); 
        height=getView().getHeight(); 
        d.setBounds(0,0,width,height); 
       shadowSize.set(width, height); 
       shadowTouchPoint.set(width/2, height/2); 
    } 
    public void onDrawShadow(Canvas canvas){ 
canvas.save(); 
d.draw(canvas); 
canvas.restore(); 
    } 
    } 
public boolean onLongClick(View v) { 
    ClipData.Item item = new ClipData.Item((CharSequence) v.getTag()); 
     ClipDescription NOTE_STREAM_TYPES = new ClipDescription((CharSequence)           

    v.getTag(),new String[] { ClipDescription.MIMETYPE_TEXT_PLAIN }); 
ClipData data = new ClipData(NOTE_STREAM_TYPES, item); 

    shadow=new Shadow(v,getApplicationContext()); 

    v.startDrag(data, shadow,null,0); 

    return false; 
} 

감사

답변

1

당신은 당신이 할 수있는이 경우 DragEvent.ACTION_DROP

에 대한 모든 기능이 구현되지 않은 :

case DragEvent.ACTION_DROP: 
     if (insideOfMe) { 
      Item item = event.getClipData().getItemAt(0); 
      // Do whatever you want to do with the item 
     } 
+0

이 유 PLZ 내가 무엇을해야하는지 말해 줄 수를 ???? – dharan

+0

님이 내 답변을 업데이트했습니다. –