Picasoo and Glide

来源:互联网 发布:英语水平测试软件 编辑:程序博客网 时间:2024/06/16 23:32

今天有点时间,就想起来玩玩Picasoo和Glide的图片框架,最早的时候使用的是universial-imagelaoder框架(支持内存和磁盘缓存),再后来接触道了xUtils3综合型框架,就一直用的xUtils3里的图片模块(默认只是内存缓存),今天看了下毕加索图片框架和Glide,感觉也好6!也都支持内存和磁盘缓存!官方地址:http://square.github.io/picasso/。 https://github.com/bumptech/glide。可以下载jar包用或者compile随意:
Picasso:

compile 'com.squareup.picasso:picasso:2.5.2'

Glide:

compile 'com.github.bumptech.glide:glide:3.7.0'

加载网络图片也是一句代码的事:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);—————————————————————————————————————————————————————————————————————————————Glide.with(context).load(url).asBitmap().format(DecodeFormat.PREFER_ARGB_8888).into(imageView);

简直就是双胞胎!

我想小伙伴最关心的应该是这句:
这里写图片描述
这里写图片描述
字面意思上就是:都支持内存和磁盘缓存。

设置一些图片参数:

Picasso.with(MainActivity.this)                        .load(url)                        .resize(50, 50)//设置宽高                        .centerCrop()//必须和resize同时使用                        .placeholder(R.drawable.user_placeholder)//加载中显示的图片                        .error(R.drawable.user_placeholder_error)//加载失败显示的图片                        .noFade()//取消图片渐显的效果                        .config(Bitmap.Config.ARGB_8888)//图片格式(源码中推荐用这个)                        .into(mImageView);

这是Picasso的参数设置,当然,还有别的参数,根据具体需求来选择相应的参数设置。Glide的就不贴了!
———————————————————————————————————————————————————————————————
实际开发的时候,有时会需求设置成带弧度圆角图片或者干脆是圆形图片
代码实现是这样的(Picasso和Glide都这样设置,这里以Picasso为例):

Picasso.with(MainActivity.this).load(url).transform(new CircleTransform()).into(mImageView);

下面是实现圆角和圆形的2个图片剪裁的类:

圆形:

package view;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import com.squareup.picasso.Transformation;public class CircleTransform 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 squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);        if (squaredBitmap != source) {            source.recycle();        }        Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());        Canvas canvas = new Canvas(bitmap);        Paint paint = new Paint();        BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);        paint.setShader(shader);        paint.setAntiAlias(true);        float r = size / 2f;        canvas.drawCircle(r, r, r, paint);        squaredBitmap.recycle();        return bitmap;    }    @Override    public String key() {        return "circle";    }}

圆角:

package view;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.Shader;public class RoundedTransformation implements com.squareup.picasso.Transformation {    private final int radius;    private final int margin;    public RoundedTransformation(final int radius, final int margin) {        this.radius = radius;        this.margin = margin;    }    @Override    public Bitmap transform(final Bitmap source) {        final Paint paint = new Paint();        paint.setAntiAlias(true);        paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));        Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);        Canvas canvas = new Canvas(output);        canvas.drawRoundRect(new RectF(margin, margin, source.getWidth() - margin, source.getHeight() - margin), radius, radius, paint);        if (source != output) {            source.recycle();        }        return output;    }    @Override    public String key() {        return "rounded";    }}

PS:就这两款图片框架来说,据说Glide的性能比Picasso的做的好!具体怎么个好法,请自行百度!

0 0