我有一个ListView,大约有50行。每个项目都有一个图像。有时,图像会被下载,但有时,我只是从应用资源中显示特定的图像。
的问题:
有时我只会显示来自资源的20张图片 所有都是相同的图像。这意味着我只是显示一个图像 20行,都是一样的。是加载一个位图一个拿 每个项目的公羊数量?或者它只是加载图像并显示它 其他项目?
每个项目的imageview尺寸为100 * 70 dp。所以我想做 在我位图之前重新调整大小或缩小图像dp的东西 他们并在我的应用程序中显示它们,所以我可以减少他们的ram数量 需要。有可能吗?
由于
答案 0 :(得分:0)
多次显示相同的图像
如果将所有图像设置为相同的Drawable(变量),则从资源中获取,只有1个位图Drawable驻留在RAM中。此外,ListView回收其行,它实际上并不创建20行,所有20个位图都加载到RAM中。
设置图像的DPI
BitmapDrawable类可以自动决定DPI进行渲染,这就是它在constructor中请求资源的原因。或者您可以稍后致电setTargetDensity(int)
。 注意:更改DPI与缩放图像不完全相同。
加载缩小的图像
这肯定会节省RAM,阅读Answers如何加载缩小的图像。