我想在android中拖动多个图像并将它们放到特定区域

我想在android中拖动多个图像并将它们放到特定区域,android,drag-and-drop,Android,Drag And Drop,我正在制作一个儿童游戏,上面有字母表,下面有随机图像。当我把一个像苹果这样的图像拖到字母“a”上时,它应该会弹出一个窗口,上面写着它是对的。有人能指导我如何实现这个想法吗 我想你问的是: 布局内的可拖动视图 碰撞算法 快速操作对话框或不可见对话框(用于弹出窗口) 一, public void setDraggable(最终视图) { 最终布局参数lp1; lp1=(LayoutParams)视图。getLayoutParams(); final int width=getWindowManage

我正在制作一个儿童游戏,上面有字母表,下面有随机图像。当我把一个像苹果这样的图像拖到字母“a”上时,它应该会弹出一个窗口,上面写着它是对的。有人能指导我如何实现这个想法吗

我想你问的是:

  • 布局内的可拖动视图
  • 碰撞算法
  • 快速操作对话框或不可见对话框(用于弹出窗口)
  • 一,

    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;
            }
        });     
    }