2012-07-30 78 views
0

我想加载一张精灵图片图片作为位图,图片分辨率为3598 x 3598,其大小为1.21MB。但是,当我试图从下面的代码加载高分辨率的精灵图片3598 x 3598

AssetManager assets = this.getAssets(); 
try { 
     InputStream inputStream = assets.open("spritesheet.png"); 
     BufferedInputStream bufferedStream = new BufferedInputStream(inputStream); 
     Bitmap bitMap = BitmapFactory.decodeStream(bufferedStream); 
} catch (Exception e) {} 

我越来越OOM(内存不足)异常加载:'(,请指导我该怎么办?

回答

1

您应该减少的大小您精灵表。你想3598 X 3598 X 8个字节加载到内存...那是一个不少。

也许你可以最多把它分解成更小,更易于管理的部分?

+0

感谢您的快速反应,你可以分享,多少分辨率或大小是可以接受的? – makki 2012-07-30 10:10:39

+0

这是硬件依赖:S,但一般来说,你应该瞄准屏幕尺寸内的东西,例如。 480x800的hdpi手机。但是,如果你要一次将所有的位图精灵放在内存中,它可能仍会给你带来问题。您应该尽量减少连续的内存使用量。 – Warpzit 2012-07-30 10:17:35

+0

我很确定有些精灵只需要偶尔加载一次,这些精灵并不需要一直在内存中,并且可以在需要的时候加载。 – Warpzit 2012-07-30 10:18:28