0

我有一个 ListView,大约有 50 行。每个项目都有一个图像。有时,图像会被下载,但有时,我只是显示来自应用程序资源的特定图像。

问题:

  1. 有时我只为我的项目显示大约 20 张来自资源的图像,所有这些都是相同的图像。这意味着我只显示 20 行相同的图像。它是否加载位图并为每个项目获取内存量?或者它只是加载图像并将其显示给其他项目?

  2. 每个项目的图像视图大小为 100*70 dp 。所以我想做一些事情,比如在我将它们位图并在我的应用程序中显示它们之前调整大小或减小图像 dp,这样我就可以减少它们占用的内存量。可能吗 ?

谢谢

4

1 回答 1

0

多次显示同一张图片

如果将所有图像设置为相同的 Drawable(变量),则从资源中获得,只有 1 个位图 Drawable 驻留在 RAM 中。此外,ListView 回收它的行,它并没有真正创建 20 行,所有 20 个位图都加载到 RAM 中。

设置图像的 DPI

BitmapDrawable 类可以自动决定渲染的 DPI,这就是它在其构造函数中要求 Resources 的原因。或者你可以setTargetDensity(int)稍后再打电话。注意:更改 DPI 与缩放图像并不完全相同。

加载按比例缩小的图像

这肯定会节省 RAM,阅读有关如何加载按比例缩小的图像的答案。

于 2012-12-09T07:16:52.163 回答