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