I have one OnDragListener
I drop views on this listener by Onlongclick
views but the problem am trying to solve is I want to restrict the view to be placed out of the layout view, it can't be placed even a little outside in the layout for different parameters of views (in terms of different length and breadth of drag able object)
also am trying to get the location of current changing run time coordinates x y in entry boxes while the view is dragging on the on drag listener layout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView imgVW = (ImageView) findViewById(R.id.imageView);
final TextView txtVW = (TextView) findViewById(R.id.textView);
txtVW.setOnLongClickListener(this);
imgVW.setOnLongClickListener(this);
findViewById(R.id.layout3).setOnDragListener(this);
}
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
return true;
}
return false;
case DragEvent.ACTION_DRAG_ENTERED:
v.invalidate();
return true;
case DragEvent.ACTION_DRAG_LOCATION:
return true;
case DragEvent.ACTION_DRAG_EXITED:
v.invalidate();
return true;
case DragEvent.ACTION_DROP:
ClipData.Item item = event.getClipData().getItemAt(0);
String dragData = item.getText().toString();
Toast.makeText(this, "Dragged data is " + dragData, Toast.LENGTH_SHORT).show();
float X=event.getX();
float Y=event.getY();
v.invalidate();
View vw = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) vw.getParent();
owner.removeView(vw);
RelativeLayout container = (RelativeLayout) v;
vw.setX(X-(vw.getWidth()/2));
vw.setY(Y-(vw.getHeight()/2));
container.addView(vw);
return true;
case DragEvent.ACTION_DRAG_ENDED:
v.invalidate();
if (event.getResult()) {
Toast.makeText(this, "The drop was handled.", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(this, "The drop didn't work.", Toast.LENGTH_SHORT).show();
return true;
default:
Log.e("DragDrop Example", "Unknown action type received by OnDragListener.");
break;
}
return true;
}
@Override
public boolean onLongClick(View v) {
ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData data = new ClipData(v.getTag().toString(), mimeTypes, item);
View.DragShadowBuilder dragshadow = new View.DragShadowBuilder(v);
v.startDrag(data
, dragshadow
, v
, 0
);
return true;
}
dont want to be placed out of layout like this