两种图片加载框架库-Picasso Glide

Picasso的使用:

它是Square公司开源的一个安卓图形缓存库 

功能:可以实现图片下载和缓存

1 不仅可以实现图片异步加载功能 

2 在adapter 中需要取消已经不再视野范围内的ImageView 图片资源的加载否则会导致图片错位 

3 使用负载的图片压缩减少内存占用

4 自带内存和硬盘二级缓存

举例使用场景:

1 加载网络图片:

Picasso.with(this).load("http://image.com").into(myImageView);

2 adapter使用:、

重用会被自动检测 取消上次的加载

@ovveride

public void getView(int position,View convertView,ViewGroup parent){

ImageView view = (ImageView) convertView;

if(View!=null){

String url = getItemt(positon);

Picasso.with(mcontext).load(url).into(view);

}else{

view = new ImageView(mcontext);

}

3 图片转换:通过转换图片用来使用布局大小并减少内存占用

Picasso.with(mcontext).load(url).resize(50,50).centerCrop().inot(myImageView);;

当然也可以自定义转换

public calss CropSqurareTransFormation Implements TransFormation{

@Override public Bitmap transform(Bitmap source) {

int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
Bitmap result = Bitmap.createBitmap(source, x, y, size, size);

if (result != source) {
source.recycle();
}
return result;
}

@Override public String key() { return "square()"; }

}

然后传递一个对象就行 

Picasso.with(this).load(R.drawable.test).transform(new CropCircleTransformation()).into((ImageView) findViewById(R.id.testimage));

详情参与:点击打开链接


Glide的使用:

一种谷歌推荐的图片加载库
Glide和Picasso基本相同但是有些地方稍微不同
两者使用 eclipse中可以下载jar包然后添加到工程中
android studio中使用需要添加依赖:
Picasso:
compile'com.squareup.picasso:picasso:2.1.0'
Glide:
compile 'com.github.bumptech.glide.:glide:3.5.2'
compile 'com.android.support:supprot-v4:23.0.0'
加载网络图片用法一样;
Picasso.with(this).load("http://image.com").into(myImageView);
Glide.with(this).load("http://image.com").into(myImageView););
唯一的区别:
Picasso的with方法传递的对象是Context
但是Glidewith方法传递的对象可以使Context Activity Fragment FragmentActivity
如果传递的Activity/Fragement 图片记载会和他们的生命周期保持一致
不足:
Glide记载图片的质量稍微比Picasso差了一点 但是占用内存较少
picasso加载全尺寸图片到内存 进行重绘 但是他也可以指定加载图片大小 正如上面提到的方法

Picasso.with(this) 
.load("http://nuuneoi.com/uploads/source/playstore/cover.jpg") 
.resize(76, 42) 
.into(myImageView);

Picasso.with(this)
.load("http://nuuneoi.com/uploads/source/playstore/cover.jpg") .fit() .centerCrop() .into(myImageView);
Glide 加载的大小和ImageVie 大小保持一致因此更小 可以自动计算 所以还是glide比较好用但是图片可能不是很平滑

缓存比较:
Picasso缓存的是一个全尺寸的图片
Glide缓存的则是每种ImageView的大小
所以上面这种情况glide 会发生这样情况;
如果第一个页面记载一个30的imageview 第二个加载80的imageview 两张图片一样内容 这个时候需要加载两次
解决方法:Glide即缓存全尺寸又缓存其它尺寸
这样可以加下显示更快 但是Picasso则因为需要重新调整大小可能导致一些延迟显示虽然可以添加方法.noFade();
Glide.with(this).load().diskCacheStrategy(DiskCacheStrategy.ALL).into(myImageView);
Glide可以实现Picasso一样的是事情:
重新设置图片大小:
Picasso: resize(20,20);
Glide:override(30,30);
重新剪切:
Picasso:centerCrop();
Glide:centerCrop();
转换:
Picasso:transform(new CircleTransform());
Glide;transform(new CircleTransform(new CircleTransform(context)));
设置展位图和加载错误图片:

Picasso:placeholder(R.drawable.image);
Picasso:error(R.drawable.image);

Glide:placeholder(R.drawable.image);
Glide:error(R.drawable.image);
Glide特殊使用:
可以用来加载动态gif 图片
可以将本地视频解码成一张静态图片
可以配置图片显示动画 Picasso只有一种动画 fading in
可以使用thumbanil()产生一个所加载图片的thumbnail缩略图
可以将图像转换成字节数组
库的大小Glide 比Picasso大
Glide中方法比较多 建议使用的时候用ProGuard 混淆 点击打开链接


至于开发中选在哪一种 自己取舍 建议使用glide
详情参阅: 点击打开链接










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值