Glide的使用&GlideApp怎么来的

"简单易上手的强大图片框架"

Posted by Jason Chen on October 9, 2017

1.Glide的优势和劣势or为什么选Glide

Glide优势
  • Glide.with()能传入activity,fragment等,可以和页面的生命周期绑定,不至于,页面停止了,图片还在加载

  • Glide支持多种数据源 本地 网络 uri assets

  • Glide加载的图片默认格式是RGB565,相比ARGB8888内存占用减少一半,但图片质量低了

  • Glide不用担心大图oom,它不会加载原图,会根据imageview的大小而加载多大

  • Glide缓存imageview大小的图片, picasso缓存原始图片,当imageview大小调整了,Glide需要重新下载,再缓存,picasso不用重新下载,只需重新绘制,一定程度上Glide加载比picasso快(时间换空间)

  • Glide可以加载动态图gif,可以播放本地视频!!!!!! ######Glide劣势

  • Glide的包和方法数多 ######其他框架劣势

  • Fresco框架不好用布局文件要用drawees,配置麻烦,学习成本相对高一些,体积很大

  • Picasso.with()只能传入context

  • UIL没有更新了

    2.Glide 4.0+的使用

    1)在module的build.gradle中添加依赖
repositories {
  mavenCentral()
  maven { url 'https://maven.google.com' }
}

dependencies {
  compile 'com.github.bumptech.glide:glide:4.2.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}

2)使用GlideApp

在Glide4.0之前使用Glide只需要

 Glide.with(this)
         .load(url)
         .placeholder(R.mipmap.ic_launcher)
         .into(iv);

但是在Glide4.0之后load(url)之后就不能调用.placeholder()等方法 查看4.0+的文档发现需要通过GlideApp来调用一系列方法

GlideApp生成的方法: ①新建一个类继承AppGlideModule ②类添加GlideModule ③Make Module

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule
{
      //可以配置Glide
}

现在就可以使用GlideApp了

GlideApp.with(this)
                .load(url)//资源路径
                .placeholder(R.mipmap.ic_launcher)//占位图
                .error(R.mipmap.ic_launcher)//加载失败
                .into(iv);

注意:需要添加网络权限!

3.Glide 4.0+图片转换

在开发中,图片经常要做一些变化,比如剪裁指定形状,圆角(可以使用CircleImageView),这边推荐一个Glide的图片转换库 https://github.com/wasabeef/glide-transformations 实现圆角效果如下: 还有一些变化,可以试试

小坑

添加了占位图.placeholder(R.mipmap.ic_launcher) 如果ImageView设置了warp_content占位图会影响加载图的大小 所以,ImageView最好设置固定大小