Android控件随手指的移动而移动

Android控件随手指的移动而移动

原理:这个不是很难,首先我们要给控件设置触摸监听时间,监听按下,移动,抬起等操作,然后在移动,按下里面分别获取按下的坐标,通过移动获取的坐标减去之前按下的坐标得到移动的距离在XY轴上面,然后获取控件在主界面的上下左右的坐标值,通过之前的坐标值加上移动的距离就是控件移动后的未知了。

代码如下:

ll_move表示要移动的控件

 ll_move.setOnTouchListener(new View.OnTouchListener() {
            private int startY;
            private int startX;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        Log.e("打印操作:", "按下了");
                        //获取当前按下的坐标
                        startX = (int) event.getRawX();
                        startY = (int) event.getRawY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        //获取移动后的坐标
                        int moveX = (int) event.getRawX();
                        int moveY = (int) event.getRawY();
                        //拿到手指移动距离的大小
                        int move_bigX = moveX - startX;
                        int move_bigY = moveY - startY;
                        Log.e("打印操作:", "\nX移动了" + move_bigX + "\nY移动了" + move_bigY);
                        //拿到当前控件未移动的坐标
                        int left = ll_move.getLeft();
                        int top = ll_move.getTop();
                        left += move_bigX;
                        top += move_bigY;
                        int right = left + ll_move.getWidth();
                        int bottom = top + ll_move.getHeight();
                        ll_move.layout(left, top, right, bottom);
                        startX = moveX;
                        startY = moveY;
                        break;
                    case MotionEvent.ACTION_UP:
                        Log.e("打印操作:", "抬起了");
                        break;
                }
                return true;//此处一定要返回true,否则监听不生效
            }
        });

再来看下效果图:


Android控件随手指的移动而移动_第1张图片


看不懂得,可下载源码查看:点击下载源码

也可以先下载APP体验:点击下载apk体验密码sank

你可能感兴趣的:(Android总结)