android– 通过Touch移动按钮

android– 通过Touch移动按钮,第1张

概述我想把我的按钮移动到另一个触摸的位置.我的意思是,如果用户触摸一个按钮并通过触摸转到另一个地方,则按钮会移动.我为其中一个按钮编写了这个代码,但是当我触摸一个按钮时,三个按钮移动以及一个按钮无法向右或向左移动,当我移动到屏幕顶部时,图像按钮的一部分被删除!问题是什么?我

我想把我的按钮移动到另一个触摸的位置.我的意思是,如果用户触摸一个按钮并通过触摸转到另一个地方,则按钮会移动.我为其中一个按钮编写了这个代码,但是当我触摸一个按钮时,三个按钮移动以及一个按钮无法向右或向左移动,当我移动到屏幕顶部时,图像按钮的一部分被删除!

问题是什么?我该如何解决这个问题?我想在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移动按钮所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存