У меня есть изображение на двух разных устройствах с разным размером экрана и плотностью.
Используя холст, я хочу нарисовать круг на изображении устройства 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) то же самое изображение отображается полностью, но занимает меньше места!
Должен ли этот подход работать при работе на реальных устройствах?
Есть ли лучший способ сделать это?