要实现一个View的滑动,首先要创建这个控件,继承于View,如下:
public class DragView extends View{ private int lastX; private int lastY; public DragView(Context context) { super(context); initBg(); } public DragView(Context context, AttributeSet attrs) { super(context, attrs); initBg(); } public DragView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initBg(); } public void initBg(){ } @Override public boolean onTouchEvent(MotionEvent event) { int x = (int)event.getX();//获取当前输入点的xy坐标 int y = (int)event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: //处理输入的按下事件 break; case MotionEvent.ACTION_MOVE: //处理输入的移动事件 case MotionEvent.ACTION_UP: //处理输入的离开事件 break; } return true; } }想要实现滑动,有以下几种方法:
public boolean onTouchEvent(MotionEvent event) { int x = (int)event.getX(); int y = (int)event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: int offX = x - lastX; int offY = y - lastY; layout(getLeft()+offX,getTop()+offY,getRight()+offX,getBottom()+offY); break; } return true; }
public boolean onTouchEvent(MotionEvent event) { int x = (int)event.getX(); int y = (int)event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: int offX = x - lastX; int offY = y - lastY; offsetLeftAndRight(offX); offsetTopAndBottom(offY); break; } return true; }
public boolean onTouchEvent(MotionEvent event) { int x = (int)event.getX(); int y = (int)event.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: int offX = x - lastX; int offY = y - lastY; RelativeLayout.LayoutParams layoutParams=(RelativeLayout.LayoutParams)getLayoutParams(); layoutParams.leftMargin=getLeft()+offX; layoutParams.topMargin=getTop()+offY; setLayoutParams(layoutParams); break; } return true; }