在Android上编写多分辨率?

在Android上编写多分辨率?,android,resolution,device,Android,Resolution,Device,我正在使用Canvas/Paint类为我的Galaxy Nexus编写这个小游戏。我还硬编码坐标值的地方画东西 当我告诉一个图像显示在500760,并且在我的设备上它是正确的,我假设在一个分辨率较小的设备上结果会不一样,会发生什么 如何确保它在所有分辨率下看起来都一样?您应该使用与密度无关的像素来定义可绘制内容:dp 对于图像,请使用特定于密度的资源,并将其放在适当的资源文件夹中。您不应硬编码像素坐标。您可以使用以下选项: getApplicationContext().getDisplayMe

我正在使用Canvas/Paint类为我的Galaxy Nexus编写这个小游戏。我还硬编码坐标值的地方画东西

当我告诉一个图像显示在500760,并且在我的设备上它是正确的,我假设在一个分辨率较小的设备上结果会不一样,会发生什么


如何确保它在所有分辨率下看起来都一样?

您应该使用与密度无关的像素来定义可绘制内容:dp
对于图像,请使用特定于密度的资源,并将其放在适当的资源文件夹中。

您不应硬编码像素坐标。您可以使用以下选项:

getApplicationContext().getDisplayMetrics.density//值,如1.00或0.75等

如果将其乘以以像素为单位的坐标,则对于高密度屏幕,将获得更高的坐标值(实际上与dp相同)

`o

publicstaticintdp(intvalue){return(int)(value*PIXEL_DENSITY+0.5F)}不确定0.5F是用来做什么的。不管怎么说,这有点效果,不过有点不对劲。例如,如果我在我的设备大小(galaxy nexus@720p)的末尾生成了一些东西,它类似于这个公共布尔onTouch(视图,运动事件事件){lastPoint=new Point();lastPoint.x=(int)(float)(event.getX()/PIXEL_DENSITY);lastPoint.y=(int)(float)(event.getY()/PIXEL_DENSITY);返回true;}