在我的应用程序中,我创建了一个 Canvas 并在其上添加了一些位图。问题是对象正在添加为什么要触摸屏幕。因此,在一个屏幕上,它们出现在不同的中间,但它们的像素位置不同。
我的意思是我有平板电脑和智能手机。当我触摸一个对象时,该对象会出现在两个设备(多人游戏)上,但它不在同一个位置,因为它通过 x 和 y 传递位置。
如果有人明白我的意思,你能帮助我吗? 也许它与计算比率一定有共同点。
最佳答案
我猜您遇到的问题是屏幕分辨率不同,并且您正在传递像素数据。您将需要使用 dp 值,并在发送它们之前将 dp 转换为像素值。在接收设备上,您需要将发送回给定设备上的像素值转换为 dp。使用以下方法进行转换。
将 DP 转换为像素:
final float scale = getResources().getDisplayMetrics().density;
int pixelValue = (int) (DESIRED_DP_VALUE * scale + 0.5f);
要将像素转换为 DP:
final float scale = getResources().getDisplayMetrics().density;
int dpValue = (int) ((DESIRED_PIXEL_VALUE) - 0.5f / scale);
对 getDisplayMetrics().denth 的调用将为您提供基于当前设备的比例值。 dp 值与密度无关。
关于Android - 在不同设备上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282151/