Glide详解

一、Glide使用

(1)在build.gradle中添加依赖

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

(2)Glide方法

  • 常用方式
        Glide.with(this)
                .load(imageUrl)
                .into(imageView);
  • placeholder:请求过程中显示。当请求成功完成时,占位符会被请求到的资源替换。
        Glide.with(this)
                .load(imageUrl)
                .placeholder(R.mipmap.ic_launcher)
                .into(imageView);
  • fallback:请求为null时展示
        Glide.with(this)
                .load(imageUrl)
                .fallback(R.drawable.ic_launcher_s)
                .into(imageView);
  • error:请求失败时展示,请求为null无fallback时展示;请求失败重新请求
        Glide.with(this)
                .load(imageUrl)
                .error(R.drawable.ic_launcher_s)
                .into(imageView);

        Glide.with(this)
                .load(imageUrl)
                .error(Glide.with(this).load(imageUrl))
                .into(imageView);
  • override:设置图片尺寸
        Glide.with(this)
                .load(imageUrl)
                .override(800, 800)
                .into(imageView);
  • thumbnail:主url加载完成后替换缩略图;如主url先加载完毕,则不显示缩略图
        Glide.with(this)
                .load(imageUrl)
                .thumbnail(0.1f)//加载图片百分比缩略图
                .into(imageView);

        Glide.with(this)
                .load(imageUrl)
                .thumbnail(Glide.with(this).load(thumbnailUrl))//缩略图的url
                .into(imageView);

        Glide.with(this)
                .load(imageUrl)
                .thumbnail(Glide.with(this).load(imageUrl).override(800, 800))//同一个url,设置图片尺寸
                .into(imageView);


  • FitCenter:Image完全显示,尺寸不对时,周围会留白。
        Glide.with(this)
                .load(imageUrl)
                .fitCenter()
                .into(imageView);
  • CircleCrop:Image圆形显示,以短边为直径,取中间位置。
        Glide.with(this)
                .load(imageUrl)
                .circleCrop()
                .into(imageView);
  • CenterCrop:Image正方形显示,以短边为边长,取中间位置。
        Glide.with(this)
                .load(imageUrl)
                .centerCrop()
                .into(imageView);
  • onlyRetrieveFromCache:仅从缓存加载图片,如果图片不再缓存,那么就会加载失败。
        Glide.with(this)
                .load(imageUrl)
                .onlyRetrieveFromCache(true)
                .into(imageView);
  • skipMemoryCache:跳过内存缓存
        Glide.with(this)
                .load(imageUrl)
                .skipMemoryCache(true)
                .into(imageView);
  • diskCacheStrategy:设置缓存策略
  • DiskCacheStrategy.ALL:远程图片同时保存原始图片和修改后的图片;本地图片仅保存修改后的图片
  • DiskCacheStrategy.AUTOMATIC:默认情况与ALL相同
  • DiskCacheStrategy.DATA:仅保存未修改的原始图片
  • DiskCacheStrategy.NONE:跳过磁盘缓存不缓存图片。
  • DiskCacheStrategy.RESOURCE: 仅保存修改后的图片。
        Glide.with(this)
                .load(imageUrl)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);
  • 显示gif静态图片
        Glide.with(this)
                .asBitmap()
                .load(imageUrl)
                .into(imageView);
  • 显示gif动态图片
        Glide.with(this)
                .asGif()
                .load(imageUrl)
                .into(imageView);
  • apply + RequestOptions使用
        RequestOptions requestOptions = new RequestOptions()
                .placeholder(R.drawable.ic_launcher)
                .error(R.drawable.ic_launcher_s)
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.ALL);


        Glide.with(this)
                .load(imageUrl)
                .apply(requestOptions)
                .into(imageView);
  • 清理磁盘缓存,需要在子线程中执行
        Glide.get(this).clearDiskCache();
  • 清理内存缓存,可以在UI主线程中进行
        Glide.get(this).clearMemory();

Glide源码详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容