Android 拖动按钮的实现

Button b =newButton();

b.setOnTouchListener(newView.OnTouchListener() {

intlastX,lastY;

@Override

public booleanonTouch(View v,MotionEvent event) {

//TODO Auto-generated method stub

intea = event.getAction();

Log.i("TAG","Touch:"+ ea);

switch(ea) {

caseMotionEvent.ACTION_DOWN:

lastX= (int) event.getRawX();

lastY= (int) event.getRawY();

break;

/**

* layout(l,t,r,b)

* l  Left position, relative to parent

t  Top position, relative to parent

r  Right position, relative to parent

b  Bottom position, relative to parent

* */

caseMotionEvent.ACTION_MOVE:

intdx = (int) event.getRawX() -lastX;

intdy = (int) event.getRawY() -lastY;

intleft = v.getLeft() + dx;

inttop = v.getTop() + dy;

intright = v.getRight() + dx;

intbottom = v.getBottom() + dy;

if(left <0) {

left =0;

right = left + v.getWidth();

}

if(right > screenWidth) {

right = screenWidth;

left = right - v.getWidth();

}

if(top <0) {

top =0;

bottom = top + v.getHeight();

}

if(bottom > screenHeight) {

bottom = screenHeight;

top = bottom - v.getHeight();

}

v.layout(left,top,right,bottom);

Log.i("","position:"+ left +", "+ top +", "+ right +", "+ bottom);

lastX= (int) event.getRawX();

lastY= (int) event.getRawY();

break;

caseMotionEvent.ACTION_UP:

break;

}

return false;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MainActivity 中通过Viewpager 管理了四个Fragment,需求是在第一个Fragment(H...
    郭某人1阅读 464评论 0 1
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 今天是我们头马中文演讲俱乐部五周年庆典。首先祝俱乐部生日快乐。 在偶然的机会我加入了头马俱乐部。加入头马俱乐部是我...
    蒲公英LiLychen阅读 173评论 0 0
  • 我多么的爱你,以至于我把所有的一切都给了你。是的,也许我不是你的一切,但,你却是我的唯一。我多么的爱你,思念如潮涌...
    逐梦一生阅读 361评论 0 0
  • 冷飕飕的风又一次光临深秋的大地,阵阵尘土随风扬起、落下,片片树叶随风飘舞,跌跌撞撞在空空荡荡的山谷。 山中的风声大...
    我爱健康阅读 224评论 3 2