强大的图片加载框架Picasso和Glide
来源:互联网 发布:发那科pmc编程说明 编辑:程序博客网 时间:2024/05/16 12:58
一、Picasso
Picasso是Square公司出品的一个强大的图片下载和缓存图片库。官方网址是:http://square.github.io/picasso/
只需要一句代码就可以将图片下载并设置到ImageView上。
特点:
1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2.使用复杂的图片压缩转换来尽可能的减少内存消耗
3.自带内存和硬盘二级缓存功能
简单加载实例:public class MainActivity extends AppCompatActivity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { mImageView = (ImageView) findViewById(R.id.image); //加载网络图片 // Picasso.with(this).load("http://i.imgur.com/DvpvklR.png").into(mImageView); //加载本地图片 // Picasso.with(this).load(R.drawable.mg2).into(mImageView); //转换图片进行裁剪 // Picasso.with(this).load("http://i.imgur.com/DvpvklR.png").resize(200,200).centerCrop().into(mImageView); /** * Place holders-空白或者错误占位图片 * error:错误占位符 * 如果加载发生错误会重复三次请求,三次都失败才会显示error Place holder */ Picasso.with(this).load("http://i.imgur.com/DvpvklR.png").placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(mImageView); }}Adapter中下载:使用ListView,GridView的时候,自动检测Adapter的重用(re-use),取消下载,使用缓存。
@Override public void getView(int position, View convertView, ViewGroup parent) { SquaredImageView view = (SquaredImageView) convertView; if (view == null) { view = new SquaredImageView(context); } String url = getItem(position); Picasso.with(context).load(url).into(view);}
二、Glide
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
Picasso和Glide都在jcenter上。在项目中添加依赖非常简单。
compile 'com.squareup.picasso:picasso:2.5.2'compile 'com.github.bumptech.glide:glide:3.7.0'Glide加载图片实例:
public class MainActivity extends AppCompatActivity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { mImageView = (ImageView) findViewById(R.id.image); //加载网络图片 // Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(mImageView); //加载本地图片 // Glide.with(this).load(R.drawable.mg2).into(mImageView); // Glide.with(this).load("http://i.imgur.com/DvpvklR.png").placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(mImageView); Glide.with(this).load("http://i.imgur.com/DvpvklR.png").placeholder(R.mipmap.ic_launcher).crossFade().into(mImageView); }Glide和Picasso非常相似,Glide加载图片的方法和Picasso如出一辙。虽然两者看起来一样,但是Glide更易用,因为Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。同时将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载。所以我建议传参的时候传递Activity 和 Fragment给Glide,而不是Context。另外,Glide加载的图片质量要差于Picasso,这是因为Glide默认的Bitmap格式是
RGB_565
,比ARGB_8888
格式的内存开销要小一半。下面是用Picasso和Glide加载同一张图片的效果差别:
Picasso: Glide:
本地图片:
Picasso裁剪图片:
0 0
- 强大的图片加载框架Picasso和Glide
- 图片加载框架Picasso和Glide
- 图片加载的框架 Imageloader Picasso Glide
- picasso和Glide加载图片
- Android图片加载框架——Picasso和Glide
- Android图片加载框架——Picasso和Glide
- Android图片加载框架分析之Glide、Picasso和Fresco
- 比Picasso更强大的框架----Glide
- 比Picasso更强大的框架Glide
- Android万能的图片加载框架(Glide、Fresco、Picasso)
- picasso glide 图片加载并缓存的框架使用
- 主流图片加载框架---Glide PK Picasso
- Picasso和Glide的图片加载与缓存
- Picasso 和 Glide 图片加载库的介绍
- Android图片加载库Glide和Picasso的区别
- Android图片加载库Picasso和Glide
- Android强大的图片加载框架:Glide的基本用法
- Android框架:glide强大的图片加载库
- JZOJ 4879 【NOIP2016提高A组集训第11场11.9】少女觉
- 线程句柄以及createthread()和closehadle()
- (三)The net/http Package
- 基于TCP的编程的大概步骤
- RAID概述
- 强大的图片加载框架Picasso和Glide
- python与C/C++之间传对象
- 锦标赛_ssl2571_拓扑排序
- java I/O详解
- 数学之美
- 类的接口和面对对象编程的添加复杂度
- mysql修改数据库的名称
- Leetcode解题报告:406. Queue Reconstruction by Height
- 欢迎使用CSDN-markdown编辑器