Android 通过触摸移动按钮

Android 通过触摸移动按钮,android,touch,android-button,Android,Touch,Android Button,我想用触摸键将我的按钮移动到另一个地方。我的意思是,如果用户触摸一个按钮并通过触摸进入另一个地方,按钮就会移动。我为其中一个按钮编写了此代码,但当我触摸一个按钮时,三个按钮同时移动,一个按钮不能向右或向左移动,当我移动到屏幕顶部时,图像按钮的一部分被删除 有什么问题?我怎样才能解决这个问题?我想在android+2.2上运行这个程序 onButton.setOnTouchListener(new OnTouchListener(){ @Override publ

我想用触摸键将我的按钮移动到另一个地方。我的意思是,如果用户触摸一个按钮并通过触摸进入另一个地方,按钮就会移动。我为其中一个按钮编写了此代码,但当我触摸一个按钮时,三个按钮同时移动,一个按钮不能向右或向左移动,当我移动到屏幕顶部时,图像按钮的一部分被删除

有什么问题?我怎样才能解决这个问题?我想在android+2.2上运行这个程序

onButton.setOnTouchListener(new OnTouchListener(){

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            switch(event.getAction()){
                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams relativeLayout=(RelativeLayout.LayoutParams) oneButton.getLayoutParams();
                    int x=(int)event.getRawX();
                    int y=(int)event.getRawY();

                    relativeLayout.leftMargin=x-50;
                    relativeLayout.rightMargin=x-50;
                    relativeLayout.topMargin=y-50;
                    relativeLayout.bottomMargin=y-50;
                    oneButton.setLayoutParams(relativeLayout);
                    break;
                    default:
                        break;
            }
            return true;
        }

    });
xml:



谢谢….

创建一个实现OnTouchListener的新类

import android.annotation.SuppressLint;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.RelativeLayout;

public class MultiTouchListener implements OnTouchListener
{

private float mPrevX;
private float mPrevY;

public MainActivity mainActivity;
public MultiTouchListener(MainActivity mainActivity1) {
    mainActivity = mainActivity1;
}

@Override
public boolean onTouch(View view, MotionEvent event) {
    float currX,currY;
    int action = event.getAction();
    switch (action ) {
        case MotionEvent.ACTION_DOWN: {

            mPrevX = event.getX();
            mPrevY = event.getY();
            break;
        }

        case MotionEvent.ACTION_MOVE:
        {

                currX = event.getRawX();
                currY = event.getRawY();


                MarginLayoutParams marginParams = new MarginLayoutParams(view.getLayoutParams());   
                marginParams.setMargins((int)(currX - mPrevX), (int)(currY - mPrevY),0, 0);
                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
                view.setLayoutParams(layoutParams); 


            break;
        }



        case MotionEvent.ACTION_CANCEL:
            break;

        case MotionEvent.ACTION_UP:

            break;
    }

    return true;
}

}
现在在您的主要活动中,在视图上设置OnTouchListener。。。这是您的imageButton或imageView

MultiTouchListener touchListener=new MultiTouchListener(this);
onButton.setOnTouchListener(touchListener);

没有人在这里帮助我!!感谢您的代码,但我的程序再次出现问题:(当我触摸并尝试移动到另一个位置时,btnFour与btnOne一起移动!!)当我触摸btnTwo时,btnThree与此一起移动(但这发生在我触摸btnThree与btnFour之前的第一个移动!)我想当用户单击按钮时,显示另一个活动,我用onClick()方法实现了这一点,但现在用这段代码,onClick()方法不起作用。我为solve onClick()向MultiTouchListener类添加了什么代码?谢谢在XML中添加下面的按钮标记,您要单击的按钮:focusable=“true”android:focusableInTouchMode=“true"另一个问题是,当我将按钮移动到屏幕底部或屏幕右侧时,我的一部分按钮被删除,就像部分按钮在ImageView下一样。为什么?你有什么建议吗?我添加了此代码,但我的问题没有解决。再次,我触摸我的按钮不显示另一个活动,当我首先触摸btnOne和btnTow时,btnFour和btnThree move有了这个!我想我的问题在xml文件中,但我不知道如何解决这个问题。对于你的按钮脱离屏幕的问题..你可以在MotionEvent.ACTION_MOVE中设置一些条件来检查你的视图是否没有脱离屏幕。为此,你可以使用if(currXMultiTouchListener touchListener=new MultiTouchListener(this); onButton.setOnTouchListener(touchListener);