Перетащите в 3.0 - PullRequest
       1

Перетащите в 3.0

1 голос
/ 26 июля 2011

Я все пытаюсь реализовать Drag and Drop в 3.0.Я прошел пример, приведенный на сайте разработчиков, но столкнулся с проблемой при отбрасывании. Вот мой код, я могу перетащить представление изображения, но не могу бросить его. Может ли кто-нибудь PLZ сказать мне, в чем проблема или предоставить любой пример кода ??

    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 Ответ

1 голос
/ 26 июля 2011

Вы не реализовали никакой функциональности для DragEvent.ACTION_DROP

В этом случае вы можете сделать:

    case DragEvent.ACTION_DROP:
        if (insideOfMe) {
            Item item = event.getClipData().getItemAt(0);
            // Do whatever you want to do with the item
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...