2013-10-25 28 views
0

我有一个自定义的View类,它显示了一些位于某些位置的标志的地图。
它应该是这样的: Map example, images taken from Google
(图片由谷歌采取)使用自定义视图在多个屏幕设备上定位图像

我画这些标志与CanvasdrawBitmap方法。
不幸的是,它不会在不同的屏幕尺寸显示相同的确切位置。

enter image description here

我一直在使用这些尝试:

BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inScaled = false; 
Bitmap img = BitmapFactory.decodeFile(myFile.getAbsolutePath(), opt); 

但它会导致在所有屏幕上完全相同的图像(将显示在大屏幕的小图像),这是不好的。
所以图像也应该缩放。
我该如何做到这一点?

+1

只是一个猜测。检查标志默认是否有白色背景。如果是这样,您可能必须使用具有透明背景的不同图像。 –

回答

1

我从来没有这样做过我的自我,但你可能需要考虑屏幕的密度。

int multiplier = getResources().getDisplayMetrics().density; 

即,对于LDPI,这将返回0.75。然后,您必须使用MDPI作为基线,并使用乘数来计算其他类型的显示。

E.g

int top = y * multiplier; 
int left = x * multiplier; 

如果我完全错了,我会删除这个答案,但是这是什么来到我的脑海。

相关问题