世界速读:5.0以下的主流图片加载框架有哪些?安卓加载图片四大框架
主流图片加载框架?
1> Picasso
2> Glide
【资料图】
3> Fresco
4> ImageLoader
介绍:
Picasso:和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现
Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),Glide默认的Bitmap格式是RGB_565,比 Picasso默认的ARGB_8888格式的内存开销要小一半;Picasso缓存的是全尺寸的(只缓存一中),而Glide缓存的是跟ImageView尺寸相同的(即56*56和128*128是两个缓存)。
Fresco:最大的又是在于5.0以下(最低2.3)的Bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。为什么说5.0以下呢?因为在5.0系统以后系统默认就是存储在Ashmem区了。
ImageLoader:旨在为图像加载,缓存和显示提供强大,灵活可定制的工具。他提供了大量的配置选项和良好的控制图像加载和缓存过程。
下面简单说一说这些框架的使用:
Picasso的基本使用:
将Picasso添加进项目后,只需一行就搞定:
Picasso.with(context).load(imageUrl).into(imageView);
1.自动将图像缓存在本地;
2.通过图片压缩转换以减少内存消耗
3.自动处理了ImageView的回收,即自动取消不在事业范围内的ImageView视图资源的加载;
Picasso裁剪:
Picasso.with(context).load(imageUrl).resize(50,50).centerCrop.info(imageView);
自定义格式转换:
为了实现更多想要转换的效果,可以自己实现一个Transformation接口的类,然后将其对象传递给transform()方法:
public class myTransformation implements Transformation{
@Override
public Bitmap transform(Bitmap source){
//对source实现自定义裁剪
}
@Override
public String key(){
return "square()"
}
}
占位符图片:
所谓的占位符图像即当图片为正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误是显示的默认图片,通过error()设置
Picasso.with(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.image).into(imageView);
载入本地资源:
除了通过网络下载图片,Picasso也可以载入本地图片资源:
Picasso.with(context).load(R.deawable.icon).into(imageView);
Picasso.with(context).load("file://android_asset/Android.png").into(imageView);
Picasso.with(context).load(new File(...)).into(imageView);
调试:为了方便调试,你可以通过测试Picasso的setIndicatiorEnabled(true);可以让不同来源的图片显示一个不同的色彩标记
2.Glide最火图片加载开源框架加载Gif资源到ImageView中
通常ImageView不能加载Gif图片,如果不做任何处理的话,加载到ImageView中的Gif只显示第一帧。网上大多方案都是借助Android的Movie,把gif图片作为流,解析成Android Movie显示,这些定制的基本思想就是线检测图片资源是否为Gif图片,若是,则按照Android Movie解析之。
Glide,本身在图片加载和缓存方面做得比较优秀,同时架子啊Gif图也很方便,把需要加载的Gif图片放到drawable目录下,然后就和普通的ImageView设置一个图片资源R.drawable.xx 一样,很简单。或者从网络URL加载一个图片,开发者不用关心这个图片资源是否是gif还是其他jpg还是png等等格式,直接将其当做一个普通的图片加载即可,
使用:
Glide.with(this).load(R.drawable.loading).into(imageView);
3.Fresco让图片的渐进式呈现的强大框架
Fresco中有个 image pipeline 的模块,负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和cpu时间,他含有3级缓存设计(2级内存,1级文件)
Fresco中设计有一个叫做Drawees模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。
Fresco支持Android2.3及以上系统
特性
内存管理:
解压后的图片,即Bitmap,占用大量的内存。大的内存占用势必会引发更加频繁的GC。在5.0以下,GC将会显著的引发界面卡顿。在5.0以下系统,Fresco将图片放到一个热别的内存区域。当然,在图片不显示的时候,占用的内存会自动释放。这会使得APP更加流畅,减少因为图片内存占用而引发的OOM。
Fresco在低端机器是上一样出色,你再也不用因图片内存占用而思前想后。
图片的渐进式呈现:
渐进式的JPEG图片格式已经流行数年了,渐进式图片格式先呈现大致的图片轮廓,然后UI随着图片下载的继续,呈现逐渐清晰的图片,这对于移动设备,尤其是网络有几大的利好,可带来更好的用户体验。
Android本身的图片库不支持次格式,但是Fresco支持,使用是,和往常一样仅仅需要提供一个图片的URL即可.
GIF图和WebP格式:
支持GIF,支持WebP格式
图像的呈现:
Fresco的Drawees设计,带来一些有用的特性:
自定义居中焦点(对人脸等图片显示非常有帮助)
元教徒,当然圆圈也行。
下载失败后,点击重新下载
自定义占位图,自定义overlay,或者进度条
指定用户按压式的overlay
图像的加载
Fresco的 image pipeline 设计,允许用户在多方面控制图片的加载:为同一个图片指定不同的远程路径,或者使用已经存在本地缓存中的图片先显示一个低解析度的图片,等高清图下载完之后在现实高清图
加载完成回调通知
对于本地图,如有EXIF缩略图,在大图加载完成之前,可先显示缩略图
缩放或者旋转图片
处理已下载的图片
WebP支持
4.ImageLoader
特性:
多线程图像加载(异步或者同步);
ImageLoader配置的广泛定制(线程池,下载器,解码器,内存和磁盘缓存策略,显示图像选项等);
每个显示图像调用的许多自定义选项(存根图像,缓存开关,解码选项,位图处理和显示等);
内存和/或磁盘上的图像缓存(设备的文件系统或SD卡);
监听加载过程(包括下载进度)
根据控件的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
较好的控制图片的加载过程,例如暂停图片加载,重新开始加载,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
提供在较慢的网络下对图片进行加载
5.Picasso,Fresco,Glide,ImageLoader优劣
Fresco:
优点:
1.图片存储在安卓系统的匿名共享内存,而不是虚拟机的堆内存中,图片的中间缓冲数据也存放在本地堆内存,所以,应用程序有更多的内存使用,不会因为图片加载而导致oom,同时也减少垃圾回收器频繁回收Bitmap导致的界面卡顿,性能更高。
2.渐进式加载JPEG图片,支持图片从模糊到清晰加载
3.图片可以以任意的中心店显示在ImageView,而不仅仅是图片的中心
4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少OOM
5.很少的支持GIF图片的显示
缺点:
框架较大,影响APK体积
使用较繁琐
ImageLoader,Picasso,Glide:这三者实现机制都差不多
ImageLoader:
比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有和http的缓存很好的结合,完全是自己的一套缓存机制
Picasso:
使用方便,一行代码完成加载图片显示,框架体积小
缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,并且默认使用ARGB_8888格式缓存图片,缓存体积大
Glide:
可以说是Picasso的升级版,有Picasso的优点,并且支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB_565格式缓存图片,是Picasso缓存体积的一半
总结:
Picasso所能实现的功能,Glide都能做,无非是所需的设置不同。但是Picasso体积比起Glide小太多,如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,体积会小很多。Glide的好处就是处理大型的图片流,比如gif、Video,如果你们是做美拍、爱拍这种视频类应用的话,建议使用Glide。
Freaso在5.0以下的内存优化非常好,代价就是体积也非常大,按体积算Fresco > Glide > Picasso
不过在使用起来也有些不便(建议:他只能用内置的一个ImageView来实现这些功能,用起来比较麻烦,我们通常是根据Fresco自己改改,直接使用它的Bitmap层)
标签:
相关推荐:
最新新闻:
- test.c测试游戏:测试三子棋的逻辑-最新资讯
- 世界速读:5.0以下的主流图片加载框架有哪些?安卓加载图片四大框架
- 每日简讯:乔尔演员想看《最后的生还者》第二季还原“乔尔之死”:最真实的版本
- 《漫漫长夜》将于4月16日离开XGP
- 荷兰弟新剧定档6月9日:在片中演精神病人|当前快讯
- 央视探访天马科技集团 | 出口内销两旺,鳗鱼产业迎来消费利好!
- N64Switch在线追加《宝可梦竞技场2》4月12日上线
- 英国实体周榜:春季游戏没人打得过《生化4重制》
- 佩蒂特:梅西被嘘简直是对足球的侮辱!
- 发行商Devolver收购《枪伞游侠》开发商doinksoft 天天热消息
- 英特尔宋继强:面向半导体“万亿时代”,以全栈创新推动算力发展_环球观焦点
- 惠普第9代游戏家族重磅发布,助力玩家 玩出内力 再来亿把|环球实时
- 出游踏青随手拍出美景 逛京东手机焕新季入手爆款新机更超值
- 快用苹果助手如何安装?快用苹果助手安装不了怎么办?
- XLUEOPS.exe是什么?XLUEOPS.exe删除的方法
- Cydia源是什么?Cydia软件卸载步骤
- dnf画面卡是怎么回事?DNF卡屏最快解决方法是什么?
- 聚焦:观察|2023年在未来五年中发挥什么样的重要作用
- MP3Resizer如何压缩MP3文件?MP3Resizer安装及使用教程
- 任务管理器打不开怎么办?任务管理器打不开解决方法
- 无线网络连接不可用怎么办?无线网络连接不可用的解决方法
- 环球精选!穷人靠变异!DC新片《蓝甲虫》预告:拉丁超英来袭
- 本地网速测试有哪些方法?本地网速测试方法
- 如何设置使用激活工具oem7F7?oem7F7使用激活方法介绍
- win10运行lol一直崩溃怎么办?win10运行lol一直崩溃解决方法
- 88e6060是什么芯片?88e6060特性和好处
- 视频如何转换为AMV格式?AMV转换精灵操作方法
- LOL图标怎么点亮?qq上的英雄联盟图标怎么点亮?
- desktop.ini是什么文件?desktop.ini可以删除吗?
- 怎么用win10制作iso镜像文件?win10制作iso镜像文件的步骤教程
- 为什么电脑看视频卡住不动?电脑看视频卡怎么办?
- win7出现黑屏代码0xc000025怎么办?黑屏代码0xc000025解决办法
- snapchat怎么注册?Snapchat账号注册方法步骤
- Svchost.exe是什么进程?svchost.exe错误的原因及解决教程
- 桌面文件夹无法删除怎么解决?桌面文件夹无法删除解决方法
- 沪深股通|海利得4月3日获外资卖出0.04%股份:天天信息
- 快看点丨《魔术士奥芬》圣域篇新艺图角色 4月12日开播
- 《海洋奇缘》真人电影公布 巨石强森主演
- 广西启动第32个全国税收宣传月暨2023年广西助企纾困活动
- 《街头霸王》将拍真人电影!网友:让成龙大哥来
- AMD宣布开发DDR5 MRDIMM内存:目标17600MB/s
- 挑战Steam Deck!华硕打造自己的掌机ROG Ally
- 当前最新:Xbox第一方游戏《量子破碎》将离开XGP阵容
- 欧洲任天堂为漂移Joy-Con手柄提供保外维修
- 要闻:《守望先锋2》新辅助英雄“生命编织者”透露
- 有哪些是强制要求支付赡养费的情形? 报资讯
- 出租房必备 格兰仕微波炉只要249元 快播报
- 维珍轨道公司正式关闭其太空发射业务_全球看点
- 云智能看护摄像头49元 环球简讯
- 环球热议:比亚迪汽车3月各车型销量出炉:卖爆了
- 出租房必备 格兰仕微波炉只要249元 快播报
- 环球热文:《卧底公民》已登陆PS4/5 Steam获特别好评
- Switch里养一只猫咪《电子猫咪宠物》4月发售 焦点要闻
- 全球动态:空气压缩机油箱爆炸的原因是什么?_送男朋友生日礼物送什么好便宜真诚
- 他54岁担任福建省委副书记,曾多次保护赖昌星,57岁被判刑13年
- 开发者:顽皮狗新作将是全新IP!知名演员参与配音:世界快报
- HP发布暗影精灵9系列游戏本:RTX 4080干到13999元 要闻速递
- 埃文斯谈回归漫威:我很喜欢美队 但现在有些不对劲
- 《DOTA2》柏林Major 4月26日开打 奖金50万美元-全球速递
- 《龙与地下城:侠盗荣耀》北美开画夺冠
- 通灵学院钥匙任务前置_通灵学院的骷髅钥匙和观察室钥匙怎么弄
- 帅丰电器赋能终端,助力集成灶门店实现财富共赢
- 帅丰电器荆州集成灶门店开业活动启动会圆满成功! 当前热点
- 天天百事通!帅丰电器集成灶+集成水槽新品齐上线 速来一睹丰华
- vivo X Flip真机曝光:外屏超大 当前快讯
- 苹果手表被曝令手腕烫伤 真相来了
- 环球观速讯丨CS2的影响力!CSGO三月开箱近4千万 消费超1亿美元
- 德信中国披露业绩补充公告 称开元信德同意公布去年度财报数据 今日热讯
- 真我GT Neo5 SE首销破纪录:1999起 只用1小时
- 天天快消息!女子坐飞机意外发现自己包机了 临时增设、不对外售票
- 不给手机号不能点餐!上海消保委暗访扫码点餐乱象
- CDPR宣布提供月经假:痛经员工可全额带薪按需休假
- 成为螃蟹!这款肉鸽射击游戏《Crab Champions》好评如潮:爽就完事了
- 环球今头条!微星泰坦GP68HX游戏本开启预售 预售价15999元
- 聚焦用户精细化运营场景 极客邦科技与火山引擎数智平台达成合作
- 天天微资讯!真我GT Neo5 SE发布:1999元 骁龙7+旗舰
- 真我GT Neo5 SE普及1.5K屏:144高刷 还有1Tb存储
- 小灵通退出日本市场 一个时代结束了!
- REITS研究行业重大事项点评:扩募启航之际 展望C-REITS市场长远结构
- 身残技坚 国外一《守望先锋2》残疾玩家达到大师段位
- 《名侦探柯南:贝克街的亡灵》曝数字生命版预告 头脑大战一触即发|世界观察
- 马斯克74岁超模妈妈结束中国行:在中国玩得很开心|世界新动态
- V社《CS2》公布后 《CS:GO》玩家开箱欲望激增_实时焦点
- 3DM加速器两周年生日会,Steamdeck游戏机等海量好礼等你来拿~|世界简讯
- 当前消息!江苏电信助力基层治理提质增效:管理更有“颗粒度”,居民才能更有“获得感”