框架系列 4:Glide

Published: 12 May 2018 Category: 框架

Glide 4.0新特性使用

Glide使用过程中问题:

Glide使用及需要注意的事项

Glide的更多调用,可以参考Glide的官方文档译文 ###使用Glide加载图片

ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";

Glide
    .with(context)
    .load(internetUrl)
    .into(targetImageView);

在这里需要注意的是,targetImageView如果大小是动态变化的,比如在项目需求中,我们需要GridView中的Item图片宽度等于高度,在listview或者gridView中频繁加载调用的话,有可能导致图片出现错乱或者加载不成功,解决方法是,使用override()方法固定图片源的宽高,避免短时间内多次重复加载。

这里的into方法还有很多的重载,具体的使用可以参考Glide的官方译文。

###使用Glide的扩展库,对图片进行处理 glide-transformations是一个基于Glide的transformation库,拥有圆角,裁剪,着色,模糊,滤镜等多种转换效果,以下主要介绍项目中常用的几种处理,需要有其它特效的可以自己去看github的使用说明。 ####裁剪一个圆形图片

Glide.with(this).load(R.drawable.demo)
  .bitmapTransform(new CropCircleTransformation(context))
  .into((ImageView) findViewById(R.id.image));

如果需要裁剪一个圆角图片,可以使用RoundedCornersTransformation(), ####高斯模糊

Glide.with(this).load(R.drawable.demo)
  .bitmapTransform(new BlurTransformation(context, 25))
  .into((ImageView) findViewById(R.id.image));

如果同时需要对一个图片进行圆角转换和高斯模糊的话,bitmapTransform的参数,是一个可变数组,我们的代码可以这样写

bitmapTransform(new BlurTransformation(context, 25), new CropCircleTransformation(context))

###后记 glide-transformations只是一个工具库,里面的工具类都是基于Glide的Transform接口,在Transform的基础上,我们也可以有一些自己的工具类,来实现一些特定的需求,Glide这个库,我并没有去深入的理解它的机制和流程(暂时没那么多时间去跟源码),有时间的小伙伴可以花一些时间,去把源码里,比较好的设计以及它的瓶颈在哪归纳整理出来,也是对自己的一种提高。

Glide 官网中文文档

参考链接:

  1. Android图片加载框架最全解析(一),Glide的基本用法(郭霖) * 1.1 https://blog.csdn.net/guolin_blog/article/details/53759439 * 1.2 https://blog.csdn.net/qq_22656383/article/details/77478631