Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建拖放图像按钮_Java_Android_Xml_Mobile_Drag And Drop - Fatal编程技术网

Java 创建拖放图像按钮

Java 创建拖放图像按钮,java,android,xml,mobile,drag-and-drop,Java,Android,Xml,Mobile,Drag And Drop,我看了一些教程,了解如何使imagebutton能够拖放。在代码中,当我单击imagebutton时,它就消失了。当我点击其他地方时,它不会回来 以下是我的imagebutton代码: mainHut = (ImageButton) findViewById(R.id.mainHut); mainHut.setOnTouchListener(new OnTouchListener() { @Override public boolean o

我看了一些教程,了解如何使imagebutton能够拖放。在代码中,当我单击imagebutton时,它就消失了。当我点击其他地方时,它不会回来

以下是我的imagebutton代码:

    mainHut = (ImageButton) findViewById(R.id.mainHut);
    mainHut.setOnTouchListener(new OnTouchListener()
    {
        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            Toast.makeText(getApplicationContext(), "in the movement", Toast.LENGTH_SHORT).show();
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                mainHutSelected = true;
            }//end if

            if (event.getAction() == MotionEvent.ACTION_UP)
            {
                if (mainHutSelected == true)
                {
                    mainHutSelected = false;
                }//end if
            }//end if
            else if (event.getAction() == MotionEvent.ACTION_MOVE)
            {
                if (mainHutSelected == true)
                {
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(50, 50);
                    params.setMargins((int)event.getRawX() - 25, (int) event.getRawY() - 50, 0, 0);
                    layout = (LinearLayout) findViewById(R.id.gllayout);
                    layout.removeView(mainHut);
                    layout.addView(mainHut, params);
                }//end if
            }//end else

            return false;
        }//end onTouch function

    });
以下是布局的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gllayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/bgm" >

        <ImageButton
            android:id="@+id/mainHut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/mainhut" />
</LinearLayout>


感谢您的帮助。谢谢。

回答我自己的问题……这就是我解决问题的方法。我花了很长时间才弄明白,但它就在这里。当涉及到我自己的imagebutton时,参数有点混乱,因此我必须弄清楚如何将我的手指保持在按钮的中心,但这会像我想要的那样移动按钮:

button.setOnTouchListener(new View.OnTouchListener() 
{

    public boolean onTouch(View v, MotionEvent event)
    {
        if (me.getAction() == MotionEvent.ACTION_MOVE )
        {
             LayoutParams params = new LayoutParams(v.getWidth(),  v.getHeight());
             params.setMargins((int)event.getRawX() - v.getWidth()/2, (int)(event.getRawY() - v.getHeight()), (int)event.getRawX() - v.getWidth()/2, (int)(event.getRawY() - v.getHeight()));
             v.setLayoutParams(params);
        }
        return false;
    }
});