Привязка при перетаскивании вида

#android #drag-and-drop

#Android #перетаскивание

Вопрос:

Я использую API перетаскивания Android. Я хочу, чтобы мое представление перемещалось по частям, т. Е. Движение не должно быть непрерывным. Допустим, единица измерения равна 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:

Этот код должен работать нормально:

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