我在两个具有不同屏幕尺寸和密度的不同设备上有一个图像。
使用画布,我想在设备 A 图像上画一个圆,然后将中心坐标发送到设备 B,并在相同位置绘制圆,即使同一个图像具有不同的大小。
在发送 x 坐标之前,我在设备 A 上执行的操作如下:
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)上,完全显示相同的图像,但占用的空间更小!
这种方法在真实设备上工作时是否可行?
有没有更好的方法呢?