Android 使用自定义视图在多个屏幕设备上定位图像

Android 使用自定义视图在多个屏幕设备上定位图像,android,view,Android,View,我有一个自定义的视图类,它显示一个地图,在某些位置有几个标志。 应该是这样的: (图片取自谷歌) 我使用Canvas的drawBitmap方法绘制这些标志。 不幸的是,它不能在不同的屏幕大小中显示相同的确切位置 我试过使用这些: BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inScaled = false; Bitmap img = BitmapFactory.decodeFile(myFile.getAbsolu

我有一个自定义的
视图
类,它显示一个地图,在某些位置有几个标志。
应该是这样的:
(图片取自谷歌)

我使用
Canvas
drawBitmap
方法绘制这些标志。
不幸的是,它不能在不同的屏幕大小中显示相同的确切位置

我试过使用这些:

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = false;
Bitmap img = BitmapFactory.decodeFile(myFile.getAbsolutePath(), opt);
但它会在所有屏幕上显示完全相同的图像(在大屏幕上显示一个小图像),这是不好的。
因此图像也应该缩放。

我怎样才能做到这一点呢?

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

int multiplier = getResources().getDisplayMetrics().density;
也就是说,对于
LDPI
,这将返回0.75。然后,您必须使用
MDPI
作为基线,并使用乘数说明其他类型的显示

例如


如果我完全错了,我会删除这个答案,但这是我想到的。

只是一个猜测。检查默认情况下标志是否为白色背景。如果是这样的话,您可能必须使用透明背景的不同图像。
int top = y * multiplier;
int left = x * multiplier;