Android加载图片防止OOM
2016-04-22 本文已影响205人
叔叔有糖吃
最近研究了郭霖老师的这篇Android高效加载大图的文章,从中学到了很多,也思考了很多。特写此文章将自己的所想结合前辈的文章一起来个总结;
郭老师一共用了两篇文章来介绍android高效加载大图,我在学习了两篇文章之后,将两篇文章结合在了一起,写了一个能自定义压缩图片的高效加载大图多图的Demo,
在参照前辈文章编写的时候,遇到一个关键的技术总结点:
```
publicstaticBitmapdecodeSampledBitmapFromResource(InputStreamis,intreqWidth,intreqHeight)
{
// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小
finalBitmapFactory.Optionsoptions=newBitmapFactory.Options();
//inJustDecodeBounds设置为true,将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息
options.inJustDecodeBounds=true;
BitmapFactory.decodeStream(is,null,options);
// 调用上面定义的方法计算inSampleSize值
options.inSampleSize=calculateInSampleSize(options,reqWidth,reqHeight);
// 使用获取到的inSampleSize值再次解析图片
options.inJustDecodeBounds=false;
returnBitmapFactory.decodeStream(is,null,options);
}