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;