我目前正在为学校制作一款简单的Android游戏,游戏运行一段时间就会耗尽内存和崩溃。我怀疑这与我在游戏中使用的图像数量有关(小的,10-20 KB大小的文件用于10个以上的项目/字符/按钮,还有一个非常大的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的初学者,因此解决方案越简单越好。
答案 0 :(得分:0)
要指出,图像文件大小不会影响内存使用。它取决于图像规格:宽x高x 1字节。
您不应该根据屏幕分辨率通过缩放来设置代码中的启动画面图像。可绘制的文件夹就是这样做的。为每个屏幕分辨率类别(l,m,x,xx,xxx)提供不同规格的不同图像。
作为快速解决方案,请将 相同图片 复制并粘贴到所有 可绘制的文件夹。令人惊讶的是,你会注意到不同之处。