使控件可拖拽
2016-11-28 00:55
106 查看
/** * 监听控件移动状态 * @param view 控件 */ private void moveView(final View view) { //获得整个屏幕的宽、高 WindowManager wWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE); final int w = wWM.getDefaultDisplay().getWidth(); final int h = wWM.getDefaultDisplay().getHeight(); //监听 view.setOnTouchListener(new View.OnTouchListener() { private int startX; private int startY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { //按下(执行1次) case MotionEvent.ACTION_DOWN: //手指按下时的那个坐标:离左边界、上边界的距离 startX = (int) event.getRawX(); startY = (int) event.getRawY(); break; //移动(执行N次) case MotionEvent.ACTION_MOVE: //1.手指滑动后那个坐标:距离左边界、上边界的距离 int moveX = (int) event.getRawX(); int moveY = (int) event.getRawY(); //2.滑动后-按下时=手指移动了多少距离(X、Y) int moveLengthX = moveX - startX; int moveLengthY = moveY - startY; //3.算出移动了多少距离之后, //就可以把控件当前所在位置的上下边+手指移动的Y距离;左右边+手指移动的X距离,这样移动后控件应该出现的位置就很明确了 int left = view.getLeft() + moveLengthX; int top = view.getTop() + moveLengthY; int right = view.getRight() + moveLengthX; int bottom = view.getBottom() + moveLengthY; //按个人需要增添:以下判断是防止控件被拖出屏幕(可以先不加然后看看效果) if (bottom>h-70||left<0||top<0||right>w) { //减70是减去手机最上面的状态栏的高度,不同手机状态栏高度不同,自己调节 return true; } //4.把控件定位到移动后的位置 view.layout(left, top, right, bottom); //5.把这个位置又作为起始坐标 startX = (int) event.getRawX(); startY = (int) event.getRawY(); break; //抬起(执行1次) case MotionEvent.ACTION_UP: //本次监听结束:如果你要做回显的话就把现在控件位置存进SharedPreferences偏好设置里,下次进界面时取出来,初始化控件到这个位置 break; } //如果只设置控件能拖拽就返回true,如果既设置拖拽又设置了点击事件就返回false return true; } }); }
相关文章推荐
- 多点触控(包括拖拽控件)的例子
- 一个能接受外部拖拽的控件(文字或文件)
- DevExpress控件学习之GridControl的Row拖拽
- jquery拖拽排序控件DragSort
- MFC单个控件实现文件拖拽功能
- 利用组合模式与访问者模式实现Android树形控件(多层级,可拖拽)
- web developer tips (18):从工具箱粘贴或拖拽控件时进行绝对定位
- 【WPF/C#】拖拽Image图片控件
- StreamAnalytix Visual Spark Studio (一)!Spark开发史上最强大的神器,只需拖拽控件即可完成Spark开发,造福国内的Spark开发者!
- flex控件拖拽效果
- 一个控件在屏幕中拖拽到任意位置
- C#TextBox控件拖拽实现获得文件路径
- UGUI控件可拖拽移动类组件
- Silverlight 游戏开发:可重用的拖拽控件
- C#控件Picturebox实现鼠标拖拽功能
- ios-将代码创建的视图控件放入拖拽控件的下面
- TreeView控件中拖拽事件与鼠标事件的坐标问题(MouseEventArgs 和 DragEventArgs 坐标问题)
- VC拖拽文件到控件
- 拖拽CuteEditor控件到页面中没有效果
- nana gui 拖拽改变控件大小