我正在开发一款游戏,我正在处理图形,我遇到了一些强制关闭。所以我的问题是:我们如何让图像在 android 中消耗更少的内存?
我将解释我的游戏,这是一个带有一些小图像和背景的逻辑游戏。我正在银河笔记中测试应用程序,1 GB 的 RAM,我认为它可以采用高分辨率,但如果我使用大图像作为背景,它会在进入暂停布局并返回后强制关闭。
所以我降低了图形并且没有强制关闭。无论如何有什么方法可以避免这个内存问题?我直接在xml上设置图像是错的吗?
解决了
我决定采用这种方法,感谢 Durairaj Packirisamy 的回答
这是我的代码:
Bitmap unscaledimgswitch = BitmapFactory.decodeResource(getResources(), R.drawable.switch1on);
ImageView switch1 = (ImageView) findViewById(R.id.switch1);
int viewheight = screenheight / 10;
int imgheight = unscaledimgswitch.getHeight();
switch1.getLayoutParams().height = viewheight;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inSampleSize = ScaledFactor.getScaleFactor(imgheight ,viewheight); // de esta forma cargo la imagen del tamaño exacto necesario
options.inJustDecodeBounds = false;
imgswitch = BitmapFactory.decodeResource(getResources(), R.drawable.switch1on, options);
switch1.setImageBitmap(imgswitch);
在另一个班级
static int getScaleFactor(int imgheight, int viewheight) {
int result;
result = imgheight / viewheight ;
return result;
}