【发布时间】:2011-11-28 11:03:53
【问题描述】:
我有一个应用程序可以为用户显示很多图像,我们已经看到很多带有OutOfMemoryError 异常的错误报告。
我们目前做的是这样的:
// Check if image is a landscape image
if (bmp.getWidth() > bmp.getHeight()) {
// Rotate it to show as a landscape
Matrix m = image.getImageMatrix();
m.postRotate(90);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
}
image.setImageBitmap(bmp);
这样做的明显问题是我们必须从内存中的图像重新创建位图并旋转矩阵,这对内存来说非常昂贵。
我的问题很简单:
有没有更好的方法来旋转图像而不会导致OutOfMemoryError?
【问题讨论】:
-
在哪一行抛出异常
-
@Dr.nik 所以,你建议我用动画旋转图像,即使它不应该是动画旋转?
-
@ingsaurabh 在
Bitmap.createBitmap上可能会超出 VM 的允许内存并引发错误。 -
我已经更新了我的答案。它现在有了更好的解决方案。
标签: android out-of-memory android-imageview