我们正在使用 Lazylist 来显示来自网络(XML Feed)的图像。小尺寸图片可以正常加载,但是当我们尝试加载大尺寸图片(超过 500kb)时,它会抛出 Out Of Memory 异常。这应该是什么解决方案?
非常感谢任何帮助。
谢谢!
在这种情况下,捕获异常并尝试以降低的质量加载图像。您可以为此使用 Bitmap.Config 类。默认使用 Bitmap.Config.ARGB_8888 进行解码,所以尝试使用 Bitmap.Config.ARGB_4444。如果再次失败,使用低质量解码 Bitmap.Config.ALPHA_8
检查示例代码以使用 Bitmap.Config.ARGB_4444 进行解码:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDither = false;
options.inPurgeable = true;
options.inInputShareable = true;
options.inTempStorage = new byte[32 * 1024];
options.inPreferredConfig = Bitmap.Config.ARGB_4444;
options.inSampleSize = 1;
Bitmap imageBitmap = BitmapFactory.decodeFile(bitmapPath, options);
请参阅下面的 Stack Overflow 答案链接以了解延迟加载列表视图,它可能会对您有所帮助,如果您对此有任何疑问,请告诉我。