我正在创建一个全屏游戏。我使用图像作为背景,并在其上绘制图像。背景图像在所有设备中看起来都很棒,但我无法在所有设备上的同一位置绘制叠加图像。
例如,如果我使用
canvas.drawBitmap(overlay, 365, 85, paint);
对于宽度为 854 像素的手机,它将完美对齐图像。但是任何低于它的东西都会被推到右边。
我试过玩dip,但我似乎无法弄清楚。有什么地方可以确保它们在所有分辨率上都正确排列?
我正在创建一个全屏游戏。我使用图像作为背景,并在其上绘制图像。背景图像在所有设备中看起来都很棒,但我无法在所有设备上的同一位置绘制叠加图像。
例如,如果我使用
canvas.drawBitmap(overlay, 365, 85, paint);
对于宽度为 854 像素的手机,它将完美对齐图像。但是任何低于它的东西都会被推到右边。
我试过玩dip,但我似乎无法弄清楚。有什么地方可以确保它们在所有分辨率上都正确排列?
如果您想这样做,您可能需要根据屏幕大小计算位置。
您可以使用以下方法找到这些:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
wPix = dm.widthPixels;
hPix = dm.heightPixels;
我猜您的目标是 1.6 或更高版本。您的背景在每台设备上看起来都不错的原因是,当您解码资源时,Android 会自动将资源缩放到您的目标屏幕密度。您可以通过将资源放在“drawable-nodpi”中来防止这种情况(您必须创建此目录)或将适当的选项传递给解码位图函数(查看文档。)如果您这样做,您'将需要手动缩放所有位图。其他两个答案有正确的想法,抓住你的屏幕尺寸并计算所有像素值。永远不要使用常量。