拖动视图时捕捉

时间:2014-07-04 23:30:28

标签: android drag-and-drop

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

当我按照以下方式进行拖动时会有很多闪烁。 (不仅仅是闪烁,整个事情都没有按照我期望的方式发挥作用)

@Override
public boolean onDrag(View v, DragEvent event) {
    int action = event.getAction();
    switch (action) {
        case DragEvent.ACTION_DRAG_LOCATION:
            View view = (View) event.getLocalState();
            if(event.getX() > view.getX()){
                view.setX(view.getX() + 50);
            } else if (event.getX() < view.getX()){
                view.setX(view.getX() - 50);
            }
            break;
        default:
            break;
    }
    return true;
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

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

    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);
    }