У меня изображение на двух разных устройствах с разным размером экрана и плотностью.
Используя холст, я хочу нарисовать окружность на изображении устройства A, затем отправить координаты центра на устройство B и нарисовать окружность в том же положении, даже если одно и то же изображение имеет другой размер.
То, что я делаю на устройстве A перед отправкой координаты x, выглядит следующим образом:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float scaledXCenter = xCenter / inchesLength;
Я делаю то же самое для координаты y.
На устройстве B я получаю те же параметры и умножаю полученную координату на длину в дюймах:
float density = getResources().getDisplayMetrics().density;
int width = getWidth();
float inchesLength = width/density;
float restoredXCenter = scaledXCenter * inchesLength;
Я проверяю это на AVD.
Проблема состоит в том, что у каждого AVD есть плотность экрана 1, даже если я ясно вижу, что на меньшем устройстве (устройство A), то же самое изображение полностью отображается, но занимает меньше места!
Должен ли этот подход работать при работе на реальных устройствах?
Есть ли лучший способ сделать это?