У меня есть кнопка (переменная theButton в коде), и я хочу иметь возможность перетаскивать ее по родительскому виду. Вот его OnTouchListener:
OnTouchListener touchBListener = new View.OnTouchListener()
{
public float offsetX;
public float offsetY;
@Override
public boolean onTouch(View v, MotionEvent event)
{
int theAction = event.getAction();
switch (theAction)
{
case MotionEvent.ACTION_DOWN:
// Button down
offsetX = theButton.getX() - event.getX();
offsetY = theButton.getY() - event.getY();
break;
case MotionEvent.ACTION_MOVE:
// Button moved
float newX = event.getX() + offsetX;
float newY = event.getY() + offsetY;
v.setX(newX);
v.setY(newY);
break;
case MotionEvent.ACTION_UP:
// Button up
break;
default:
break;
}
return true;
}
};
theButton.setOnTouchListener(touchBListener);
Когда я перетаскиваю кнопку, она перемещается в общем направлении перетаскивания, но продолжает прыгать взад и вперед между своим «текущим» местом и местом ранее в перетаскивании. Скачки больше, когда сопротивление по какой-то причине идет вверх и вправо.
Возможно ли «плавное» перетаскивание с помощью OnTouchListener или вместо этого мне нужно использовать OnDragListener?