Как выровнять элементы управления после перетаскивания в приложении Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как выровнять элементы управления после перетаскивания в приложении Android?

Сообщение Anonymous »

Я пытаюсь реализовать перетаскивание кнопок по плитке.
Кнопки создаются динамически один раз. Их 15, но они используются только в том случае, если они видны, присвоив им букву.
Их можно выбрать, нажав.
У меня также есть методы, которые будут перетасовывать или выравнивать.
Выравнивание осуществляется путем сравнения положения кнопок и равномерного расположения их.
Проблема в том, что когда я их перетаскиваю, они обычно не выравниваются после перетаскивания, даже если я указал выравнивание как часть кода перетаскивания.
Вторая проблема заключается в том, что Кнопка иногда нажимается в процессе перетаскивания.
// DRAGGING ROUTINES
private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener {

@Override
public boolean onSingleTapUp(MotionEvent event) {
return true;
}
}

View.OnTouchListener mover = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {

// dragging
Log.e("MotionEvent", String.valueOf(event.getAction()));
switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_BUTTON_PRESS: //
dX = v.getX() - event.getRawX();
break;

case MotionEvent.ACTION_MOVE:
v.animate()
.x(event.getRawX() + dX)
.setDuration(0)
.start();
break;

case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_BUTTON_RELEASE: //
case MotionEvent.ACTION_CANCEL: //
default:
Arrays.sort(buttons, new Comparator() {
@Override
public int compare(Button b1, Button b2) {
if (b1.getX() >= b2.getX()) return 1; // >= gives b1 preference; 2 buttons cannot be in same place
else return -1;
}
});
alignButtons();
break;
}

// single tap adds selected button letter to answer
if (gestureDetector.onTouchEvent(event)) {
addLetter(v);
if (dragger)
alignButtons();
}
return true;
}
};


private void alignButtons() {
Log.i("ButtonStart", Float.toString(buttonStart) );
int seq = 0;
for (int i = 0; i < buttons.length; i++) {
if (buttons.getVisibility() == View.VISIBLE) {
float pos = buttonStart + (seq * buttonWidth);
buttons.setX(pos);
seq++;
Log.i(buttons.getText().toString(), Float.toString(buttons.getX()));
}
}
}



Подробнее здесь: https://stackoverflow.com/questions/796 ... ndroid-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»