Android 拖动视图时捕捉

Android 拖动视图时捕捉,android,drag-and-drop,Android,Drag And Drop,我正在使用android的拖放api。我希望我的观点是分块移动的,即移动不应该是连续的。假设单位是50像素。所以我希望我的视图每50个像素移动一次,而不是在两者之间 当我按下面的方法拖动时,会有很多闪烁。(好吧,不仅仅是闪烁,整个事情都没有按照我预期的方式进行) @覆盖 公共布尔onDrag(视图v,DrageEvent事件){ int action=event.getAction(); 开关(动作){ case DragEvent.ACTION\u拖动位置: 视图=(视图)事件。getLoca

我正在使用android的拖放api。我希望我的观点是分块移动的,即移动不应该是连续的。假设单位是50像素。所以我希望我的视图每50个像素移动一次,而不是在两者之间

当我按下面的方法拖动时,会有很多闪烁。(好吧,不仅仅是闪烁,整个事情都没有按照我预期的方式进行)

@覆盖
公共布尔onDrag(视图v,DrageEvent事件){
int action=event.getAction();
开关(动作){
case DragEvent.ACTION\u拖动位置:
视图=(视图)事件。getLocalState();
if(event.getX()>view.getX()){
view.setX(view.getX()+50);
}else if(event.getX()

任何帮助都将不胜感激

此代码应该可以正常工作:

    final int SIZE = 50;
    View view;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_MOVE:
                setX(event.getX()/SIZE);
                setY(event.getY()/SIZE);
                return true;
        }
        return super.onTouchEvent(event);
    }
    final int SIZE = 50;
    View view;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_MOVE:
                setX(event.getX()/SIZE);
                setY(event.getY()/SIZE);
                return true;
        }
        return super.onTouchEvent(event);
    }