我想把我的按钮移动到另一个触摸的位置.我的意思是,如果用户触摸一个按钮并通过触摸转到另一个地方,则按钮会移动.我为其中一个按钮编写了这个代码,但是当我触摸一个按钮时,三个按钮移动以及一个按钮无法向右或向左移动,当我移动到屏幕顶部时,图像按钮的一部分被删除!
问题是什么?我该如何解决这个问题?我想在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:
<?xml version="1.0" enCoding="utf-8"?><relativeLayoutxmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"><ImageVIEw androID:ID="@+ID/img" androID:src="@drawable/root" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" androID:adjustVIEwBounds="true" androID:scaleType="fitXY"/><Imagebutton androID:ID="@+ID/btnOne" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParentRight="true" androID:layout_marginRight="35dip" androID:layout_alignParenttop="true" androID:layout_margintop="70dip" androID:src="@drawable/onebutton" androID:background="@null" androID:visibility="invisible"/><Imagebutton androID:ID="@+ID/btnTwo" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParentleft="true" androID:layout_marginleft="35dip" androID:layout_alignParenttop="true" androID:layout_margintop="70dip" androID:src="@drawable/twobutton" androID:background="@null" androID:visibility="invisible"/> <Imagebutton androID:ID="@+ID/btnThree" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@ID/btnOne" androID:layout_alignParentleft="true" androID:layout_marginleft="15dip" androID:layout_alignParentBottom="true" androID:layout_marginBottom="10dip" androID:src="@drawable/Threebutton" androID:background="@null" androID:visibility="invisible"/> <Imagebutton androID:ID="@+ID/btnFour" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@ID/btnTwo" androID:layout_alignParentRight="true" androID:layout_marginRight="15dip" androID:layout_alignParentBottom="true" androID:layout_marginBottom="10dip" androID:src="@drawable/fourbutton" androID:background="@null" androID:visibility="invisible"/> </relativeLayout>
谢谢….
解决方法:
创建一个实现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;}@OverrIDepublic 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;}}
现在在您的Main活动中,在您的视图上设置OntouchListener …这是您的imagebutton或imageVIEw;
MultitouchListener touchListener=new MultitouchListener(this);onbutton.setontouchListener(touchListener);
总结 以上是内存溢出为你收集整理的android – 通过Touch移动按钮全部内容,希望文章能够帮你解决android – 通过Touch移动按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)