1

我目前正在为学校开发一款简单的 Android 游戏,该游戏运行了一段时间,然后内存不足并崩溃。我怀疑这与我在游戏中使用的图像数量有关(10 多个项目/字符/按钮的 10-20 KB 大小的小文件,以及用于启动画面的非常大的 450 KB PNG 文件背景)。

我一直在使用 BitmapFactory 来解码我所有的小项目 PNG,并且我还能够为我的主 GameView 设置背景(仅包含最少的示例代码):

public class GameView extends SurfaceView implements SurfaceHolder.Callback {

private Bitmap background, invincibleBitmap;

//Sets the background bitmap to an image scaled to the same size as the user's screen
background = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.background), getWidth(), getHeight(), false);
invincibleBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.invincible_item), 60, 60, false);

然而,对于我之前提到的启动画面,我一直在使用 Activity 的 Layout XML 文件来设置图像:

  android:background="@drawable/main"

我希望能够像在 Activity 中的 View 中那样缩放 main.png,希望它能帮助解决内存过载问题。我该怎么做呢?我一般是 Android 的初学者,所以解决方案越简单越好。

4

1 回答 1

0

需要指出的是,图像文件大小不会影响内存使用。它取决于图像规格:宽 x 高 x 1 字节。

您不应该通过根据屏幕分辨率对其进行缩放来在代码中设置初始屏幕图像。可绘制文件夹可以做到这一点。为每个屏幕分辨率类别(l、m、x、xx、xxx)提供具有不同规格的不同图像。

作为一种快速解决方案,将相同的图像复制并粘贴到所有可绘制文件夹中。令人惊讶的是,您会注意到不同之处。

于 2014-11-24T09:46:01.360 回答