【发布时间】:2017-04-07 04:39:24
【问题描述】:
我需要加载尺寸为 2450 x 2450 像素的大图像。
Bitmap bitmap = ImageLoader.getInstance().loadImageSync(url,
ImageConfig.getImageOptions());
问题是,在低端设备(RAM 小于 1 GB 的手机)上,出现内存不足异常。
这是我的 DisplayImageOptions
public static DisplayImageOptions getImageOptions() {
DisplayImageOptions.Builder options = new DisplayImageOptions.Builder();
options.delayBeforeLoading(10)
//The reason I'm using ARGB_8888 because I need to load bitmap without losing it's quality
.bitmapConfig(Bitmap.Config.ARGB_8888)
.imageScaleType(ImageScaleType.NONE)
//I'm not using disk or memory cache
.cacheOnDisk(false)
.cacheInMemory(false);
return options.build();
}
我尝试根据设备分辨率添加目标大小,但它不起作用,加载的位图仍然具有 2450 x 2450 像素尺寸。
int height = orientation == Configuration.ORIENTATION_PORTRAIT ?
displaymetrics.heightPixels : displaymetrics.widthPixels;
Bitmap bitmap = ImageLoader.getInstance().loadImageSync(imageUri,
new ImageSize(height, height), ImageConfig.getImageOptions());
我尝试将 imageScaleType 更改为 ImageScaleType.EXACTLY,将加载的位图调整为 1225 x 1225 像素,在所有设备上,我需要获取高端设备的原始尺寸,以及低端设备的调整尺寸。
主要问题是目标大小不起作用
知道我应该如何加载图像,尤其是对于低端设备?
【问题讨论】:
-
你为什么不使用缓存
-
因为不需要,即使使用缓存在低端设备上仍然出现内存不足的异常
-
加载时调整图像大小。相当标准。
-
这就是我想要做的,但目标大小并不能正常工作
标签: android bitmap universal-image-loader