Java android将拖动的对象放到另一个对象上
我正在测试我的android拖放游戏。我让拖动工作正常,但我希望将拖动的对象(imageview)放到另一个imageview上(在我的代码中,我使用objBasket) 这是我迄今为止尝试过的代码:Java android将拖动的对象放到另一个对象上,java,android,drag-and-drop,imageview,Java,Android,Drag And Drop,Imageview,我正在测试我的android拖放游戏。我让拖动工作正常,但我希望将拖动的对象(imageview)放到另一个imageview上(在我的代码中,我使用objBasket) 这是我迄今为止尝试过的代码: mainLayout = (AbsoluteLayout) findViewById(R.id.mainLayout); mainLayout.setOnTouchListener(new View.OnTouchListener() { @Override
mainLayout = (AbsoluteLayout) findViewById(R.id.mainLayout);
mainLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.i("touch", "touched here" + event);
if(status == 1) // any event from down and move
{
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
(int)event.getX()-iv.get(0).getWidth()/2,
(int)event.getY()-iv.get(0).getHeight()/2);
iv.get(0).setLayoutParams(lp);
} else if(status == 2){
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
(int)event.getX()-iv.get(1).getWidth()/2,
(int)event.getY()-iv.get(1).getHeight()/2);
iv.get(1).setLayoutParams(lp);
} else if(status == 3){
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
(int)event.getX()-iv.get(2).getWidth()/2,
(int)event.getY()-iv.get(2).getHeight()/2);
iv.get(2).setLayoutParams(lp);
} else if(status == 4){
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
(int)event.getX()-iv.get(3).getWidth()/2,
(int)event.getY()-iv.get(3).getHeight()/2);
iv.get(3).setLayoutParams(lp);
}
if(event.getAction() == MotionEvent.ACTION_UP){
status = 0;
iv.get(0).setBackgroundColor(Color.TRANSPARENT);
iv.get(1).setBackgroundColor(Color.TRANSPARENT);
iv.get(2).setBackgroundColor(Color.TRANSPARENT);
iv.get(3).setBackgroundColor(Color.TRANSPARENT);
} else if (event.getAction() == MotionEvent.ACTION_DOWN){
status = 0;
}
return true;
}
});
我的问题是在MotionEvent.ACTION\u DOWN中应该使用什么方法?我是个新来的拖拽东西的人,所以请原谅。这里有人做过同样的事吗?请给我建议或示例代码。提前谢谢 这是一种检查两个视图矩形边界是否相交的方法
private boolean checkHit(View v, View hit){
Rect rv = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
Rect rhit = new Rect(hit.getLeft(), hit.getTop(), hit.getRight(), hit.getBottom());
return rv.intersect(rhit);
}
这一点是否属于
private boolean checkHit(MotionEvent event, View hit){
Rect rhit = new Rect(hit.getLeft(), hit.getTop(), hit.getRight(), hit.getBottom());
return rhit.contains((int)event.getRawX(), (int)event.getRawY());
}
然后只需浏览你感兴趣的观点,然后
编辑:
在你的动作中调用类似这样的部分,我这样做是为了在if语句中切换
case MotionEvent.ACTION_UP:
drop(v, event);
break;
升降法
private void drop(View v, MotionEvent event){
checkHit(v, view2beHit);
checkHit(event, view2beHit);
// Do some for looping, do some other magic, do what you want
}
希望这有助于您享受工作。在“向下运动”中,您应该使用您的点(x,y)是否属于下面的一些图像,或者您可以查看其中两个点是否与其边界相交Rects@MarkoLazi谢谢你的提问,你有让我开始的示例代码吗?谢谢。请原谅,我仍然不明白我将把这个代码嵌入哪里?当view2behit和viewtohit点击时,我可以设置它们相同的绝对位置吗?