美文网首页
Glide3.x及4.x加载图片

Glide3.x及4.x加载图片

作者: sybil052 | 来源:发表于2019-01-09 17:12 被阅读0次

一、Glide 3.x 加载图片

1. 配置

在app/build.gradle文件当中添加如下依赖:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.8.0'
}
2. 加载图片
// 加载图片
Glide.with(MapKitHomeActivity.this).load(imagePath).into(ivShowImg);

// 使用Target来加载显示图片
Glide.with(mContext).load(url).asBitmap().into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
            ivBanner.setImageBitmap(resource);
        }
});

// 加载圆形图片
Glide.with(context).load(url)
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .skipMemoryCache(false)
        .error(R.drawable.icon_load_photo)
        .placeholder(R.drawable.icon_load_photo) //加载成功前显示的图片
        .fallback(R.drawable.icon_load_photo) //url为空的时候,显示的图片
        .transform(new CircleCrop(context)).into(info);
CircleCrop.java
public class CircleCrop extends BitmapTransformation {

    public CircleCrop(Context context) {
        super(context);
    }

    public CircleCrop(BitmapPool bitmapPool) {
        super(bitmapPool);
    }

    @Override
    public String getId() {
        return "com.example.glidetest.CircleCrop";
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        int diameter = Math.min(toTransform.getWidth(), toTransform.getHeight());

        final Bitmap toReuse = pool.get(outWidth, outHeight, Bitmap.Config.ARGB_8888);
        final Bitmap result;
        if (toReuse != null) {
            result = toReuse;
        } else {
            result = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888);
        }

        int dx = (toTransform.getWidth() - diameter) / 2;
        int dy = (toTransform.getHeight() - diameter) / 2;
        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        BitmapShader shader = new BitmapShader(toTransform, BitmapShader.TileMode.CLAMP,
                BitmapShader.TileMode.CLAMP);
        if (dx != 0 || dy != 0) {
            Matrix matrix = new Matrix();
            matrix.setTranslate(-dx, -dy);
            shader.setLocalMatrix(matrix);
        }
        paint.setShader(shader);
        paint.setAntiAlias(true);
        float radius = diameter / 2f;
        canvas.drawCircle(radius, radius, radius, paint);

        if (toReuse != null && !pool.put(toReuse)) {
            toReuse.recycle();
        }
        return result;
    }

}

二、Glide 4.x 加载图片

1. 配置

在app/build.gradle文件当中添加如下依赖:

dependencies {
    compile 'com.github.bumptech.glide:glide:4.2.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
2. 使用GlideApp加载图片
1. 新建一个我们自己的模块类MyAppGlideModule
@GlideModule
public class MyAppGlideMoudle extends AppGlideModule {
}
2. 在Android Studio中点击菜单栏Build -> Rebuild Project

神奇的事情发生了,MyAppGlideModule类所在的包名下生成了GlideApp,可以使用这样的语句来加载图片:

// 加载图片
GlideApp.with(MapKitHomeActivity.this).load(imagePath).into(ivShowImg);

// 使用Target来加载显示图片
GlideApp.with(mContext).asBitmap().load(url).into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
            ivBanner.setImageBitmap(resource);
        }
 });

// 加载圆形图片
RequestOptions requestOptions = RequestOptions.circleCropTransform();
GlideApp.with(context).load(url)
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .skipMemoryCache(false)
        .error(R.drawable.icon_load_photo)
        .placeholder(R.drawable.icon_load_photo) //加载成功前显示的图片
        .fallback(R.drawable.icon_load_photo) //url为空的时候,显示的图片
        .apply(requestOptions).into(info);

三、Glide 加载图片添加 cookie

GlideUrl url = new GlideUrl(uri, new LazyHeaders.Builder().addHeader("Cookie", "cookie=" + tokenId).build());

相关文章

网友评论

      本文标题:Glide3.x及4.x加载图片

      本文链接:https://www.haomeiwen.com/subject/zhygrqtx.html