如何使用Android BitmapFactory.Options.inBitmap?

时间:2017-03-18 15:08:57

标签: android out-of-memory android-bitmap

此方法解码位图而不会产生OutOfMemory异常:

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight)
{
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    options.inInputShareable = true;
    options.inPurgeable = true;

    BitmapFactory.decodeResource(res, resId, options);

    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
}

但是字段inInputShareableinPurgeable在sdk = 21中已弃用。

如何更改上述方法以使用BitmapFactory.Options.inBitmap

它会在21之前的设备上正常运行吗?

1 个答案:

答案 0 :(得分:0)

  

如何更改上述方法以使用BitmapFactory.Options.inBitmap?

options.inBitmap设置为您希望重复使用的现有Bitmap对象作为解码目标。

  

它会在21之前的设备上正常运行吗?

这完全取决于您提供的Bitmap以及如何正确定义“

  • 在API级别19+上,Bitmap需要与您尝试解码的Bitmap大小相同或更大。否则,Bitmap将被忽略,您将获得新的Bitmap

  • 在较旧的设备上,Bitmap的大小(分辨率)必须与您尝试解码的Bitmap相同。否则,Bitmap将被忽略,您将获得新的Bitmap