我想在android中拖动多个图像并将它们放到特定区域
我正在制作一个儿童游戏,上面有字母表,下面有随机图像。当我把一个像苹果这样的图像拖到字母“a”上时,它应该会弹出一个窗口,上面写着它是对的。有人能指导我如何实现这个想法吗 我想你问的是:我想在android中拖动多个图像并将它们放到特定区域,android,drag-and-drop,Android,Drag And Drop,我正在制作一个儿童游戏,上面有字母表,下面有随机图像。当我把一个像苹果这样的图像拖到字母“a”上时,它应该会弹出一个窗口,上面写着它是对的。有人能指导我如何实现这个想法吗 我想你问的是: 布局内的可拖动视图 碰撞算法 快速操作对话框或不可见对话框(用于弹出窗口) 一, public void setDraggable(最终视图) { 最终布局参数lp1; lp1=(LayoutParams)视图。getLayoutParams(); final int width=getWindowManage
public void setDraggable(最终视图)
{
最终布局参数lp1;
lp1=(LayoutParams)视图。getLayoutParams();
final int width=getWindowManager().getDefaultDisplay().getWidth();
最终整数高度=getWindowManager().getDefaultDisplay().getHeight();
view.setOnTouchListener(新的OnTouchListener(){
公共布尔onTouch(视图v,运动事件){
view.bringToFront();
开关(event.getAction())
{
案例(MotionEvent.ACTION\u DOWN):
{
打破
}
案例(MotionEvent.ACTION\u MOVE):
{
if((event.getRawX()+(view.getWidth()/2))view.getWidth())
lp1.leftMargin=(int)event.getRawX()-(view.getWidth()/2);
如果((event.getRawY()-view.getHeight())0)
lp1.topMargin=(int)event.getRawY()-view.getHeight();
view.setLayoutParams(lp1);
打破
}
案例(MotionEvent.ACTION\u UP):
{
}
}
返回true;
}
});
}
基本上,它所做的是改变你的视野,使它看起来像是在移动。在这里使用相对布局
我在这里给你一个提示。应用程序中的所有视图/图像都是矩形的,所以只需获取视图的所有侧面(以像素为单位),然后使用if-else语句
(三)
或者您可以简单地使用setVisibility
public void setDraggable(final View view)
{
final LayoutParams lp1 ;
lp1 = (LayoutParams) view.getLayoutParams();
final int width = getWindowManager().getDefaultDisplay().getWidth();
final int height = getWindowManager().getDefaultDisplay().getHeight();
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
view.bringToFront();
switch(event.getAction())
{
case(MotionEvent.ACTION_DOWN):
{
break;
}
case(MotionEvent.ACTION_MOVE):
{
if((event.getRawX()+(view.getWidth()/2))<width&&((event.getRawX()+(view.getWidth()/2)) > view.getWidth()))
lp1.leftMargin = (int) event.getRawX() - (view.getWidth()/2);
if((event.getRawY()-view.getHeight())<height&&(event.getRawY()-view.getHeight())>0)
lp1.topMargin = (int) event.getRawY() - view.getHeight();
view.setLayoutParams(lp1);
break;
}
case(MotionEvent.ACTION_UP):
{
}
}
return true;
}
});
}