glide在github地址:https://github.com/bumptech/glide

1.添加依赖(最好看官网,因为有时候添加依赖的会有轻微改动,版本也会一直更新)

  1. repositories {
  2. mavenCentral()
  3. google()
  4. }
  5.  
  6. dependencies {
  7. implementation 'com.github.bumptech.glide:glide:4.7.0'
  8. annotationProcessor 'com.github.bumptech.glide:compiler:4.7.0'
  9. }

2.简单使用

  1. String url = "http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg";
  2. Glide.with(this).load(url).into(imageView);

调用Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收Context、Activity或者Fragment类型的参数。也就是说我们选择的范围非常广,不管是在Activity还是Fragment中调用with()方法,都可以直接传this。那如果调用的地方既不在Activity中也不在Fragment中呢?也没关系,我们可以获取当前应用程序的ApplicationContext,传入到with()方法当中。注意with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。

接下来看一下load()方法,以下是加载不同类型的资源时的代码示例

  1. // 加载本地图片
  2. File file = new File(getExternalCacheDir() + "/image.jpg");
  3. Glide.with(this).load(file).into(imageView);
  4.  
  5. // 加载应用资源
  6. int resource = R.drawable.image;
  7. Glide.with(this).load(resource).into(imageView);
  8.  
  9. // 加载二进制流
  10. byte[] image = getImageBytes();
  11. Glide.with(this).load(image).into(imageView);
  12.  
  13. // 加载Uri对象
  14. Uri imageUri = getImageUri();
  15. Glide.with(this).load(imageUri).into(imageView);

占位图

占位图是用来在未加载完成时预先展示的图片,另外还给出了加载错误时展示其他图片,以及如何禁止使用缓存等

  1. Glide.with(this)
    .load(url)
    .placeholder(R.drawable.loading) //占位图
    .error(R.drawable.error) //加载错误时显示的图片
    .diskCacheStrategy(DiskCacheStrategy.NONE) //禁止使用缓存
    .into(imageView);

指定图片格式(静态图片还是动态图片GIF)

glide可以自动识别要加载的资源时静态还是动态图片,但是也可以硬性指定,而且动态可以指定成静态,静态指定成动态就会报错。

  1. Glide.with(this)
  2. .load(url)
  3. .asGif()  //动态   //.asBitmap()静态
  4. .placeholder(R.drawable.loading)
  5. .error(R.drawable.error)
  6. .diskCacheStrategy(DiskCacheStrategy.NONE)
  7. .into(imageView);

glide自动判断imageview大小,避免内存浪费,同时还可以指定图片的大小

使用Glide,我们就完全不用担心图片内存浪费,甚至是内存溢出的问题。因为Glide从来都不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少。Glide会自动判断ImageView的大小,然后只将这么大的图片像素加载到内存当中,帮助我们节省内存开支。

  1. Glide.with(this)
  2. .load(url)
  3. .placeholder(R.drawable.loading)
  4. .error(R.drawable.error)
  5. .diskCacheStrategy(DiskCacheStrategy.NONE)
  6. .override(100, 100)//指定图片的大小,不管你控件多大,图片就是这么大
  7. .into(imageView);

glide使用的更多相关文章

  1. Glide源码导读

    最近比较无聊,为了找点事干,就花了两天时间把Glide的源码大概看了一下.刚开始看Glide的源码头脑还是比较乱的,因为作者引入了几个概念,又大量用了泛型,如果不了解这些概念读起代码来就比较痛苦,我也 ...

  2. Glide实现圆角和圆形图片

    实现圆形图片 , 传参第一个为上下文, 第二个为角度 package com.hh.beauter.util; import android.content.Context; import andro ...

  3. Android图片缓存之Glide进阶

    前言: 前面学习了Glide的简单使用(Android图片缓存之初识Glide),今天来学习一下Glide稍微复杂一点的使用. 图片缓存相关博客地址: Android图片缓存之Bitmap详解 And ...

  4. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  5. Glide加载图片到自定义的圆形ImageView中不显示

    当使用自定义的圆形ImageView时,发现使用Glide加载并设置默认初始图片时,自定义的ImageView一直显示默认图片,无法更新到加载的图片. 使用下面代码可以解决这个问题 Glide.wit ...

  6. Glide请求图片能携带Cookie的哟!

    在Web编程中我们都很熟知一个概念,当有了seesion登录状态时,你可以访问一些资源但如果你没有登录的话很多资源是无法访问的. 在android的WebApi中当然一样拥有这个概念.比如,用户的头像 ...

  7. Glide加载异常调试

    Glide提供了listener链式调用方法,传入一个RequestListener对象,然后实现内部的onException方法,那么在Glide加载图片失败时就会调用这个方法. 代码实现很简单: ...

  8. Notification中使用Glide

    之前一直在琢磨Glide自定义使用中的一些经验:今天简单的分享下Notification中使用Glide去加载icon方法: 我们都知道使用android通知时,一般可能会有如下代码: Notific ...

  9. Glide 魔法般的自定义扩展

    使用过Glide的朋友都明白,简单的用法就是: Glide.with(context) .load("http://inthecheesefactory.com/uploads/source ...

  10. Glide 图片加载库

    compile 'com.github.bumptech.glide:glide:3.7.0' Glide.with(context) //图片url .load("http://www.b ...

随机推荐

  1. DIV内容超出长度显示省略号,鼠标移上自动显示全部内容(EasyUI DataGrid)

    如果想把DIV中超出的文本显示成省略号,而不是换行全部显示,有2个办法. 注:本文主要是以EasyUI的DataGrid为案例的,如果是其他场景只要底层是用DIV显示文本的应该都能使用. 首先可以给此 ...

  2. stark组件开发之添加按钮显示和URL

    添加: 需求: 根据用户的权限, 决定是否,有添加按钮.  通过配置进行定制,预留钩子进行权限的判断. class StartHandler(object): .................... ...

  3. Mybatis的针对于同一个有自己父类或子类的递归查询 (如商品分类)

    1.pojo代码 private Integer categoryId; private Integer superId; private String name; private Byte leve ...

  4. easyui中的option设置selected没有效果

    在mvc中,使用了easyUI框架,然后我点击添加新消息的时候弹窗一个新窗口,添加信息.却发现我的select一直无法设置默认状态,jq选中,还是直接在添加一条请选择的option都没办法选中,网络上 ...

  5. Unity3D连接本地或局域网MySQL数据库

    准备工作: 1.打开 Unity3D 安装目录,到这个路径下 Editor > Data > Mono > lib > mono > 2.0 拷贝出下图的五个动态链接库, ...

  6. ACM_贪心法_queue_Fence Repair

    题目如下,来源POJ Farmer John wants to repair a small length of the fence around the pasture. He measures t ...

  7. XamlWriter-将对象树写入Xaml

    WPF通常用Xaml格式创建对象树.您还可以使用XamlWriter类进行反方向操作——将对象树写入Xaml. 对于XamlWriter来说,将对象转换成良好的Xaml表示形式通常很容易.但是,您不能 ...

  8. bash编程-条件测试

    Shell脚本中经常需要判断某情况或者数据是否满足,需要由测试机制来实现. 测试方式 echo $?查看命令执行状态返回值 bash脚本中可以自定义返回值exit n(n为自己指定的状态码),shel ...

  9. [数据清洗]-Pandas 清洗“脏”数据(一)

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  10. php安装扩展的几种方法

    转自:http://doc3.workerman.net/appendices/install-extension.html 安装扩展 注意 与Apache+PHP或者Nginx+PHP的运行模式不同 ...