Android图片加载性能优化总结资料.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 图片加载性能优化总结 一、Android Bitmap加载大尺寸图片优化:? 压缩原因: 1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为; 2.最重要的是图片过大时直接加载原图会造成OOM异常(out of memory内存溢出) 所以一般对于大图我们需要进行下压缩处理 看不懂英文的话木有关系,本篇会有介绍 主要处理思路是: 1.获取图片的像素宽高(不加载图片至内存中,所以不会占用资源) 2.计算需要压缩的比例 3.按将图片用计算出的比例压缩,并加载至内存中使用 官网大图片加载教程(上面网址里的)对应代码就是: /** * 获取压缩后的图片 *?@param?res *?@param?resId *?@param?reqWidth? ?? ?? ?? ?所需图片压缩尺寸最小宽度 *?@param?reqHeight? ?? ?? ???所需图片压缩尺寸最小高度 *?@return */ public?static?Bitmap decodeSampledBitmapFromResource(Resources res,?int?resId, int?reqWidth,?int?reqHeight) { ? ? ? ??// 首先不加载图片,仅获取图片尺寸 ? ??final?BitmapFactory.Options options =?new?BitmapFactory.Options(); ? ??// 当inJustDecodeBounds设为true时,不会加载图片仅获取图片尺寸信息 ? ? options.inJustDecodeBounds?=?true; ? ??// 此时仅会将图片信息会保存至options对象内,decode方法不会返回bitmap对象 ? ? BitmapFactory.decodeResource(res, resId, options); ? ??// 计算压缩比例,如inSampleSize=4时,图片会压缩成原图的1/4 ? ? options.inSampleSize?=?calculateInSampleSize(options, reqWidth, reqHeight); ? ??// 当inJustDecodeBounds设为false时,BitmapFactory.decode...就会返回图片对象了 ? ? options.?inJustDecodeBounds?=?false; ? ??// 利用计算的比例值获取压缩后的图片对象 ? ??return?BitmapFactory.decodeResource(res, resId, options); } 代码详解: 核心方法是BitmapFactory.decode...(...., options) ...的意思是此外还有一系列的decodeFile/decodeStream等等方法,都是利用options灵活解析获取图片, 只不过解析图片的来源不同罢了,比如网络图片获取,一般就是解析字节流信息然后decode获取图片实例 Options是图片配置信息,参数详细介绍下: inJustDecodeBounds?是否只解析边界 ? ???设为true时去decode获取图片,只会加载像素宽高信息 ? ???设为false时decode则会完全加载图片 inSampleSize?压缩比例 ? ???比如原图200*300,如果值是2时会压缩成100*150; 是4则图片压缩成50*75最好是2的幂数,比如2 4 8 16 ..... outHeight?图片原高度 outWidth?图片原宽度 其他参数自行研究,这里暂时只用到这几个 decodeSampledBitmapFromResource方法内的三段代码对应上面的三步流程 难点在于中间那步,压缩比例的计算,官网同样提供了个calculateInSampleSize方法 其中reqWidth和reqHeight是所需图片限定最小宽高值 /** * 计算压缩比例值 *?@param?options? ?? ? 解析图片的配置信息 *?@param?reqWidth? ?? ?? ?? ?所需图片压缩尺寸最小宽度 *?@param?reqHeight? ?? ?? ???所需图片压缩尺寸最小高度 *?@return */ public?static?int?calculateInSampleSize(BitmapFactory.Options options, int?reqWidth,?int?reqHeight) { ? ?? ??// 保存图片原宽高值 ? ?? ??final?

文档评论(0)

boss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档