国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android控件拖動實例詳解

2019-12-12 04:13:50
字體:
來源:轉載
供稿:網友

Android控件拖動

Android控件的拖動,主要是通過設置控件的setOnTouchListener()方法,重寫它的onTouch()方法。然后通過MotionEvent的不同事件,進行判斷,主要是在MotionEvent.ACTION_MOVE中不斷重繪控件在畫布中的位置,而實現拖動的效果。

public class DragViewActivity extends AppCompatActivity {   private Button btn_drag;    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_drag_view);       // 獲取屏幕的寬高     DisplayMetrics dm = getResources().getDisplayMetrics();     final int screenWith = dm.widthPixels;     final int screenHeight = dm.heightPixels;      btn_drag = (Button) findViewById(R.id.btn_drag);     btn_drag.setOnTouchListener(new View.OnTouchListener() {         int lastX;         int lastY;         boolean isDraging = false;        @Override       public boolean onTouch(View v, MotionEvent event) {         int ee = event.getAction();         switch (ee){           case MotionEvent.ACTION_DOWN:             isDraging = true;             lastX = (int) event.getRawX();             lastY = (int) event.getRawY();             break;           case MotionEvent.ACTION_MOVE:             if (isDraging){               // x軸方向的位移差               int dx = (int) event.getRawX() - lastX;               // y軸方向的位移差               int dy = (int) event.getRawY() - lastY;                int l = v.getLeft() + dx;               int t = v.getTop() + dy;               int r = v.getRight() + dx;               int b = v.getBottom() + dy;                // 判斷超出屏幕               if (l < 0){                 l = 0;                 r = l + v.getWidth();               }               if (t < 0){                 t = 0;                 b = t + v.getHeight();               }               if (r > screenWith){                 r = screenWith;                 l = r - v.getWidth();               }               if (b > screenHeight){                 b = screenHeight;                 t = b - v.getHeight();               }                // 重繪view               v.layout(l, t, r, b);               v.postInvalidate();                lastX = (int) event.getRawX();               lastY = (int) event.getRawY();             }             break;            case MotionEvent.ACTION_UP:             isDraging = false;             break;           default:             break;         }         return false;       }     });   } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北流市| 凤凰县| 兴安县| 万荣县| 龙游县| 阳江市| 博湖县| 武义县| 闽清县| 黄冈市| 柯坪县| 武功县| 革吉县| 九龙坡区| 会宁县| 红桥区| 乃东县| 丹江口市| 海安县| 广西| 秦安县| 博白县| 房产| 苍山县| 富锦市| 洛隆县| 张家港市| 囊谦县| 娱乐| 黄大仙区| 汉源县| 中超| 彰化县| 黄陵县| 泽普县| 项城市| 肇源县| 石棉县| 广德县| 会东县| 明光市|