此方法解码位图而不会产生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);
}
但是字段inInputShareable
和inPurgeable
在sdk = 21中已弃用。
如何更改上述方法以使用BitmapFactory.Options.inBitmap
?
它会在21之前的设备上正常运行吗?
答案 0 :(得分:0)
如何更改上述方法以使用BitmapFactory.Options.inBitmap?
将options.inBitmap
设置为您希望重复使用的现有Bitmap
对象作为解码目标。
它会在21之前的设备上正常运行吗?
这完全取决于您提供的Bitmap
以及如何正确定义“
在API级别19+上,Bitmap
需要与您尝试解码的Bitmap
大小相同或更大。否则,Bitmap
将被忽略,您将获得新的Bitmap
。
在较旧的设备上,Bitmap
的大小(分辨率)必须与您尝试解码的Bitmap
相同。否则,Bitmap
将被忽略,您将获得新的Bitmap
。