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