Не корректное перемещение View через OnTouchListener
Есть код, который должен передвигать View элемент. Сначала он был написан просто для передвижения и работает через onTouchEvent. Код привёл ниже
float x, y;
float dx, dy;
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
x = event.getX();
y = event.getY();
}
if(event.getAction() == MotionEvent.ACTION_MOVE){
dx = event.getX() - x;
dy = event.getY() - y;
btn.setX(btn.getX() + dx);
btn.setY(btn.getY() + dy);
x = event.getX();
y = event.getY();
}
return super.onTouchEvent(event);
}
Код работает корректно, но он не работает именно по нажатию на кнопку. После этого был написан код, который работает с кнопкой, но при его использовании кнопка начинает "дёргаться" при передвижении, возвращаясь на предыдущую позицию при движении. Код привёл ниже
float x, y;
float dx, dy;
View.OnTouchListener listener = new View.OnTouchListener(){
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
x = motionEvent.getX();
y = motionEvent.getY();
}
if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
dx = motionEvent.getX() - x;
dy = motionEvent.getY() - y;
btn_left_shift.setX(btn_left_shift.getX() + dx);
btn_left_shift.setY(btn_left_shift.getY() + dy);
x = motionEvent.getX();
y = motionEvent.getY();
}
return true;
}
};
В чём может быть проблема второго кода?