2012-04-10 39 views
0

虽然我知道图像分辨率,并支持他们在android上是一个相当常见的问题围绕android我似乎无法找到任何问题或在线发布处理我想要的东西去做。Android - 覆盖不同分辨率的图像

我有一个地图,我设置为Android设备的背景。然后,我将可触及的点和图像叠加在特定城市所在的位置。我的问题是如何正确处理城市在不同设备上的位置?

我有不同的图像为不同的dpi如果有人要问。然而,在这种情况下,使用基于缩放的背景大小的百分比来固定x和y的位置是正确的方法。这是我不断回来的解决方案,但是我还没有找到一种方法来获取背景图像的缩放大小。

任何反馈将不胜感激。 瑞安

回答

1

这是中的Android确实难以尝试使用DPI /权重的组合在背景层图像上的特定位置。其中一个问题是背景如何缩放?您是使用建议的9补丁图像还是让android裁剪或缩小图像?即使在这之后,手机的“dpi”值也不准确,操作系统只是使用预定义的乘数(例如hdpi的1.5倍)来快速估计图像的大小。要得到“真实”的dpi,你需要这样的东西:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 

float xDpi = dm.xdpi; 
float yDpi = dm.ydpi; 

并在你的计算中使用这些值。最后,最好简单地使用屏幕的真实值并使用您所述的百分比。我相信大多数OpenGL应用程序也是这样做的(如果我错了,有人会纠正我),而使用图形引擎边缘的应用程序的行为可能类似。

+0

谢谢,虽然我不太喜欢这个主意,但知道这是我需要去的方向是有帮助的。我已经允许背景缩放以适应屏幕,我刚刚计算了缩放比例,并用于计算叠加其他图像的点数。到现在为止还挺好!谢谢,至少我知道我正朝着正确的方向前进。 – Ryan 2012-04-18 08:18:11

0

尝试布局权重,这里是一个很好的解释:

http://www.chess-ix.com/2012/01/17/the-use-of-layout_weight-with-android-layouts/

+0

尽管这可能在理论上回答这个问题,但[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供了供参考的链接。 – 2012-04-10 14:13:44

+0

感谢您的回复,但我不明白这是如何涉及的。不是在屏幕上使用多个视图,而是使用代表世界地图的单个视图。然后,我将小绘制的图像叠加到该地图上。目前正如前面提到的,我正在使用缩放的屏幕尺寸 - 这似乎工作,但似乎过度。 – Ryan 2012-04-11 09:56:46