android 图片加载性能优化总结

android 图片加载性能优化总结

ID:33565383

大小:499.70 KB

页数:54页

时间:2019-02-27

android 图片加载性能优化总结_第1页
android 图片加载性能优化总结_第2页
android 图片加载性能优化总结_第3页
android 图片加载性能优化总结_第4页
android 图片加载性能优化总结_第5页
资源描述:

《android 图片加载性能优化总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android图片加载性能优化总结一、AndroidBitmap加载大尺寸图片优化: 压缩原因:1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为;2.最重要的是图片过大时直接加载原图会造成OOM异常(outofmemory内存溢出)所以一般对于大图我们需要进行下压缩处理看不懂英文的话木有关系,本篇会有介绍主要处理思路是:1.获取图片的像素宽高(不加载图片至内存中,所以不会占用资源)2.计算需要压缩的比例3.按将图片用计算出的比例压缩,并加载至内存中使用官网大图片加载教程(上面网址里的)对应代码就是:/***获取压缩后

2、的图片* @param res* @param resId* @param reqWidth        所需图片压缩尺寸最小宽度* @param reqHeight        所需图片压缩尺寸最小高度* @return*/public static BitmapdecodeSampledBitmapFromResource(Resourcesres, int resId,int reqWidth, int reqHeight){     //首先不加载图片,仅获取图片尺寸   final BitmapFactory.Optionsoptions= new Bitmap

3、Factory.Options();   //当inJustDecodeBounds设为true时,不会加载图片仅获取图片尺寸信息  options.inJustDecodeBounds = true;   //此时仅会将图片信息会保存至options对象内,decode方法不会返回bitmap对象  BitmapFactory.decodeResource(res,resId,options);   //计算压缩比例,如inSampleSize=4时,图片会压缩成原图的1/4  options.inSampleSize = calculateInSampleSize(opt

4、ions,reqWidth,reqHeight);   //当inJustDecodeBounds设为false时,BitmapFactory.decode...就会返回图片对象了  options. inJustDecodeBounds = false;   //利用计算的比例值获取压缩后的图片对象   return BitmapFactory.decodeResource(res,resId,options);}代码详解:核心方法是BitmapFactory.decode...(....,options)...的意思是此外还有一系列的decodeFile/decodeSt

5、ream等等方法,都是利用options灵活解析获取图片,只不过解析图片的来源不同罢了,比如网络图片获取,一般就是解析字节流信息然后decode获取图片实例Options是图片配置信息,参数详细介绍下:inJustDecodeBounds 是否只解析边界    设为true时去decode获取图片,只会加载像素宽高信息    设为false时decode则会完全加载图片inSampleSize 压缩比例    比如原图200*300,如果值是2时会压缩成100*150;是4则图片压缩成50*75最好是2的幂数,比如24816.....outHeight 图片原高度outWid

6、th 图片原宽度其他参数自行研究,这里暂时只用到这几个decodeSampledBitmapFromResource方法内的三段代码对应上面的三步流程难点在于中间那步,压缩比例的计算,官网同样提供了个calculateInSampleSize方法其中reqWidth和reqHeight是所需图片限定最小宽高值/***计算压缩比例值* @param options    解析图片的配置信息* @param reqWidth        所需图片压缩尺寸最小宽度* @param reqHeight        所需图片压缩尺寸最小高度* @return*/public sta

7、tic int calculateInSampleSize(BitmapFactory.Optionsoptions,int reqWidth, int reqHeight){     //保存图片原宽高值     final int height=options. outHeight;     final int width=options. outWidth;     //初始化压缩比例为1     int inSampleSize=1;     //当图片宽高值任何一个大于所需压缩图片宽高值时,进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。