日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

可拖拽的ImageButton

發布時間:2025/6/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可拖拽的ImageButton 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

所有的View都可以實現onTouchListener,我們可以監聽此方法去獲取控件的坐標,

然后重繪控件的位置

上個圖:



import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageButton; import android.widget.Toast; public class DraftButtonActivity extends Activity { ?? ? ? @Override ? ? ? public void onCreate(Bundle savedInstanceState) { ?? ? ? ? ? super.onCreate(savedInstanceState); ?? ? ? ? ? setContentView(R.layout.main); ?? ? ? ? ? DisplayMetrics dm = getResources().getDisplayMetrics(); ?? ? ? ? ? final int screenWidth = dm.widthPixels; ?? ? ? ? ? final int screenHeight = dm.heightPixels - 50; ?? ? ? ? ? final ImageButton btn = (ImageButton) findViewById(R.id.btn); ?? ? ? ? ? btn.setOnTouchListener(new OnTouchListener() { ?? ? ? ? ? ? ? int lastX, lastY; ?? ? ? ? ? ? ? @Override ? ? ? ? ? ? ? public boolean onTouch(View v, MotionEvent event) { ?? ? ? ? ? ? ? ? ? // TODO Auto-generated method stub ?? ? ? ? ? ? ? ? ?int ea = event.getAction(); ?? ? ? ? ? ? ? ? ? Log.i("TAG", "Touch:" + ea); ?? ? ? ? ? ? ? ? ? switch (ea) { ?? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_DOWN: ?? ? ? ? ? ? ? ? ? ? ? lastX = (int) event.getRawX();// 獲取觸摸事件觸摸位置的原始X坐標 ?? ? ? ? ? ? ? ? ? ? ? lastY = (int) event.getRawY(); ?? ? ? ? ? ? ? ? ? ? ? break; ?? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_MOVE: ?? ? ? ? ? ? ? ? ? ? ?int dx = (int) event.getRawX() - lastX; ?? ? ? ? ? ? ? ? ? ? ? int dy = (int) event.getRawY() - lastY; ?? ? ? ? ? ? ? ? ? ? ?int l = v.getLeft() + dx; ?? ? ? ? ? ? ? ? ? ? ?int b = v.getBottom() + dy; ?? ? ? ? ? ? ? ? ? ? ? int r = v.getRight() + dx; ?? ? ? ? ? ? ? ? ? ? ? int t = v.getTop() + dy; ?? ? ? ? ? ? ? ? ? ? ?// 下面判斷移動是否超出屏幕 ?? ? ? ? ? ? ? ? ? ? ? if (l < 0) { ?? ? ? ? ? ? ? ? ? ? ? ? ? l = 0; ?? ? ? ? ? ? ? ? ? ? ? ? ?r = l + v.getWidth(); ?? ? ? ? ? ? ? ? ? ? ? } ?? ? ? ? ? ? ? ? ? ? ? if (t < 0) { ?? ? ? ? ? ? ? ? ? ? ? ? t = 0; ?? ? ? ? ? ? ? ? ? ? ? ? ? b = t + v.getHeight(); ?? ? ? ? ? ? ? ? ? ? ? } ?? ? ? ? ? ? ? ? ? ? ? if (r > screenWidth) { ?? ? ? ? ? ? ? ? ? ? ? ? ? r = screenWidth; ?? ? ? ? ? ? ? ? ? ? ? ? ? l = r - v.getWidth(); ?? ? ? ? ? ? ? ? ? ? ?} ?? ? ? ? ? ? ? ? ? ? ? if (b > screenHeight) { ?? ? ? ? ? ? ? ? ? ? ? ? ? b = screenHeight; ?? ? ? ? ? ? ? ? ? ? ? ? ?t = b - v.getHeight(); ?? ? ? ? ? ? ? ? ? ? ?} ?? ? ? ? ? ? ? ? ? ? ? v.layout(l, t, r, b); ?? ? ? ? ? ? ? ? ? ? ? lastX = (int) event.getRawX(); ?? ? ? ? ? ? ? ? ? ? ?lastY = (int) event.getRawY(); ?? ? ? ? ? ? ? ? ? ? ? Toast.makeText(DraftButtonActivity.this, ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "當前位置:" + l + "," + t + "," + r + "," + b, ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Toast.LENGTH_SHORT).show(); ?? ? ? ? ? ? ? ? ? ? ?v.postInvalidate(); ?? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case MotionEvent.ACTION_UP: ?? ? ? ? ? ? ? ? ? ? break; ?? ? ? ? ? ? ? ? ?} ?? ? ? ? ? ? ? ? ?return false; ?? ? ? ? ? ? ? } ?? ? ? ? ? }); ?? ? ? } ?? } ?



轉載于:https://www.cnblogs.com/android-html5/archive/2011/07/26/2534125.html

總結

以上是生活随笔為你收集整理的可拖拽的ImageButton的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。