Java – Drag and drop on a shadowed target in android and then drag and drop back to its original position?

Drag and drop on a shadowed target in android and then drag and drop back to its original position?… here is a solution to the problem.

Drag and drop on a shadowed target in android and then drag and drop back to its original position?

onDrag class:

private class ChoiceDragListener implements OnDragListener {

@Override
    public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
        case DragEvent.ACTION_DRAG_STARTED:
             no action necessary
            break;
        case DragEvent.ACTION_DRAG_ENTERED:
             no action necessary
            break;
        case DragEvent.ACTION_DRAG_EXITED:
             no action necessary
            break;
        case DragEvent.ACTION_DROP:
             handle the dragged view being dropped over a drop view
            View view = (View) event.getLocalState();

dropTarget = (RelativeLayout) v;

dropped = (RelativeLayout) view;
            tagDropped = dropped.getTag().toString();

Log.i("tagDropped", "" + tagDropped);
            tagDropTarget = dropTarget.getTag().toString();
            Log.i("tagDropTarget", "" + tagDropTarget);

matchTag();

break;
        case DragEvent.ACTION_DRAG_ENDED:
             no action necessary
            break;
        default:
            break;
        }
        return true;
    }
}

ChoiceTouchListener class:

private final class ChoiceTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent motionEvent) {
        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
            /*
             * Drag details: we only need default behavior - clip data could
             * be set to pass data as part of drag - shadow can be tailored
             */
            ClipData data = ClipData.newPlainText("", "");
            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
                    view);
             start dragging the item touched
            view.startDrag(data, shadowBuilder, view, 0);
            return true;
        } else {
            return false;
        }
    }
}

Now I want to move the object to the original position where it was dragged

I had such a search but did not answer anyonedrag and drop with onDraglistener animate to go back to original position if not dropped on target

Solution

Start by getting the distance between the dragger control and the drag receiver control:
TextView1 is a drag control
TextView2 is a drag receiver control

//if text view2 is below textview one and text view 2 is on the right of text view one
int topMargin=textview2_top_margin - textview1_top_margin
int leftMargin=textview2_left_margin - textview1_left_margin

public void animation() {
  Animation animation = new TranslateAnimation(left_margin, 0, topMargin, 0);
  animation.setDuration(1000);
  controlToAnimate.startAnimation(animation);
 }

Related Problems and Solutions