我想将一个城市的 map 设置为我的应用程序的背景,并且我想在它上面的已知坐标处放置一些图标。
我通过创建一个扩展 SurfaceView 并实现 Runnable 的类设法在 320x480 分辨率下实现它; map 和图标都是在 run() 方法中绘制的(通过 canvas.drawBitmap())。
显然,当我尝试在不同的屏幕分辨率上运行我的应用程序时,一切都变得一团糟。
你能给我一些关于如何绘制背景图像并使图标保持其“位置”而不管屏幕分辨率如何的提示吗?
非常感谢!
最佳答案
您需要实现与密度无关的像素。
private final float dpScale =
getContext().getResources().getDisplayMetrics().density;
private final float dp = (onePixel * dpScale +0.5f);
把这个放在你的绘图代码的顶部。每次你画东西时,将你的 x 和 y 坐标乘以 dp。 示例:
canvas.drawText("hello world", 100*dp, 150*dp);
关于java - Android 屏幕上精确坐标处的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8487857/