Android:显示许多图像,OutOfMemoryError

时间:2013-11-12 09:31:54

标签: java android image out-of-memory

我有一个应用程序,我想在BBC应用程序中显示图像。

enter image description here

但是我没有从服务器加载它们,所有图片都在res文件夹中。 至少有72个图像(jpg),全部~512 * 340(每个~10kB)。一共大约有1MB。

我希望以340 * 225显示它们,并且只显示它们的完整尺寸。

我尝试通过XML和仅通过Java实现这一点,但是当显示超过12张图像时,我只会得到一个outofmemory。

我现在已经搜索了几个小时的解决方案,但仍未发现任何问题。 我阅读了android教程:http://developer.android.com/training/displaying-bitmaps/index.html 和许多其他stackoverflow问题,但它们看起来不适合我的问题。

如何将图像加载到我的活动中?如何在不浪费大量内存的情况下调整它们的大小?

修改

现在我在onCreate()中加载所有图像:

ImageView ivDOK01 = new ImageView(this);
ivDOK01.setImageBitmap(decodeSampledBitmapFromResource(getResources(),
R.drawable.vo_dok01, 240, 164));

ivDOK01.setOnClickListener(this);
ivDOK01.setMaxWidth(240);
ivDOK01.setPadding(5, 5, 5, 5);
ivDOK01.setAdjustViewBounds(true);

- > 72次

setImageBitmap来自android开发人员教程。

编辑2: 使用这种方法,我可以在得到outofmemoryerror之前显示72个图像中的30个。

但是如果图像有点大,我会遇到问题。

是否有选项只显示RAM中的图像? 正常的Android Galery如何做到这一点,你可以在数百张图像上快速搜索?

2 个答案:

答案 0 :(得分:0)

您可以使用许多库类来避免内存问题,其中大多数使用延迟图像加载,Universal image loader是一个很好的

答案 1 :(得分:0)

我找到了解决方案:

我将jpg图像转换为bmp(它们大约为12mb)并将质量和大小降低到340 * 225。 (现在他们有大约4mb)

然后我只是将它们异步加载到程序中。

接下来,我将尝试如何使用jpg而不会失去性能或获得太多内存。