Адаптирование анимации в android

Помогите, пожалуйста, разобраться. Я окончательно запутался. Есть у меня условно кнопка, её размеры заданны в dp - тут все понятно, она отображается на всех устройства +/- одинаково. Но как её одинаково перемещать на всех устройствах? Есть ли какой-то способ задать перемещение в dp? Или я что-то упустил? введите сюда описание изображения

button10 = ObjectAnimator.ofPropertyValuesHolder(pr10,
                PropertyValuesHolder.ofFloat("x", 0, 250),
                PropertyValuesHolder.ofFloat("y", 1050, 140));
        button10.setDuration(getSpeed());
        button10.setRepeatCount(ObjectAnimator.INFINITE);
        button10.setRepeatMode(ObjectAnimator.REVERSE);
        button10.start();

up:

По экрану движутся кнопки (около 10 шт), пример анимации выше, при нажатии на любую из них создается новая кнопка, которая отправляется на свое расположение (зависит от очередности нажатия):

ObjectAnimator button_copy_button10 = ObjectAnimator.ofPropertyValuesHolder(copy_pr10,
                PropertyValuesHolder.ofFloat("x", ListCoordinateX_1.get(0)),
                PropertyValuesHolder.ofFloat("y", LineY_1.get(0)));
        button_copy_button10.setDuration(1500);
        button_copy_button10.start();

Координаты ListCoordinateX_1.get(0) и LineY_1.get(0)) берутся из списка. Вот эти точки мне и надо задавать так, что бы они были одинаковы под все разрешения.


up:

Разобрался, сделал так: protected ArrayList LineY_1 = new ArrayList();

    public Point viewLocatedAt(View v) {
    int[] location = new int[2];
    v.getLocationOnScreen(location);
    int x = location[0];
    int y = location[1];
    return new Point(x, y);
    } //определение координат

    int f = viewLocatedAt(imv5).y - (pr1.getHeight()/4 );
    LineY_1.clear();
    LineY_1.add(f);
  • imv5 - элемент куда должна переместиться кнопка
  • pr1 - кнопка. Так как все они одинаковы, то используются размеры первой.

Ответы (1 шт):

Автор решения: Спицко Дмитрий

Например можно решить проблему в лоб - переводить нужное количество dp в пиксели в рантайме. px = dp * scale, где скейл можно получить из описания дисплея

float scale = getContext().getResources().getDisplayMetrics().density;
→ Ссылка