Android 拖動按鈕的實現(xiàn)

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;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MainActivity 中通過Viewpager 管理了四個Fragment,需求是在第一個Fragment(H...
    郭某人1閱讀 476評論 0 1
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • 今天是我們頭馬中文演講俱樂部五周年慶典。首先祝俱樂部生日快樂。 在偶然的機(jī)會我加入了頭馬俱樂部。加入頭馬俱樂部是我...
    蒲公英LiLychen閱讀 200評論 0 0
  • 我多么的愛你,以至于我把所有的一切都給了你。是的,也許我不是你的一切,但,你卻是我的唯一。我多么的愛你,思念如潮涌...
    逐夢一生閱讀 383評論 0 0
  • 冷颼颼的風(fēng)又一次光臨深秋的大地,陣陣塵土隨風(fēng)揚起、落下,片片樹葉隨風(fēng)飄舞,跌跌撞撞在空空蕩蕩的山谷。 山中的風(fēng)聲大...
    我愛健康閱讀 237評論 3 2

友情鏈接更多精彩內(nèi)容