0

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

在此处输入图像描述

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

我想以 340*225 显示它们,并且仅在单击它们时才显示它们的全尺寸。

我尝试通过 XML 和仅通过 Java 来实现这一点,但是当显示超过 12 个图像时,我只会出现内存不足的情况。

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

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

编辑:

现在我在我的 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: 使用这种方法,我可以在出现内存不足错误之前显示 72 张图像中的 30 张。

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

是否可以选择仅显示 RAM 中的图像?普通的 Android Galery 是如何做到这一点的,您可以在其中快速浏览数百张图像?

4

2 回答 2

0

您可以使用许多库类来避免内存问题,其中大多数使用延迟图像加载,通用图像加载器是一个不错的选择

于 2013-11-12T09:39:48.367 回答
0

我找到了一个解决方案:

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

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

接下来我将尝试如何在不损失性能或获取太多内存的情况下使用 jpg。

于 2013-11-13T09:56:35.980 回答