在imageview中加载重位图的最佳方法是什么?

时间:2013-04-29 11:19:31

标签: android

作为一名新程序员,每当我使用OutOfMemoryException BitmapFactory.decodeStream(is,option)对象的returns方法时,我都会对Bitmap感到困惑。由于每个应用程序都有virtual machine预算,如果超出预算会导致OutOfMemoryException并且应用程序崩溃,因为bitmap很重。所以任何人都可以帮助我。我必须使用ImageView方法将图像设置为setImageBitmap(bitmap)。除非直到m无法进行Bitmap引用,否则如何将其设置为ImageView

6 个答案:

答案 0 :(得分:1)

尝试这样,它会起作用..

   public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
    int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
     

}

答案 1 :(得分:0)

link将提供您需要的所有信息,以避免OutOfMemoryExceptions

这是您问题的最佳答案,因为您没有详细说明代码的实现。看看它,然后学习。

答案 2 :(得分:0)

我遇到了同样的问题所以我使用了以下选项

BitmapFactory.Options options=new BitmapFactory.Options();
options.inPreferQualityOverSpeed=false;
options.inSampleSize=10;
options.inScaled=false;
options.inTargetDensity=100;

我希望这对你也有用

答案 3 :(得分:0)

Android开发参考包含许多新Android开发人员的示例和指南。

Here您可以找到一个开发指南,解释在应用程序中加载位图的bes实践。

此解决方案是将内存中的图像缩小到imageView的大小,以避免OutOfMemoryException。因为对于非常大的图片,如果您的屏幕仅为720p宽,则不需要加载每个像素。

答案 4 :(得分:0)

如果您在模拟器上测试应用,请尝试通过编辑AVD来增加VM heap的大小。希望这会对你有所帮助。

答案 5 :(得分:0)

尝试解码您的位图,然后使用它。

try this

  Bitmap  bitmap =   Bitmap.createScaledBitmap(ImageResource,desired height , desired width ,false);