前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >glide 一个强大的图片加载框架

glide 一个强大的图片加载框架

作者头像
developerHaoz
发布于 2018-08-20 07:05:35
发布于 2018-08-20 07:05:35
41800
代码可运行
举报
运行总次数:0
代码可运行

转载请注明出处 作者:developerHaoz Github 地址:developerHaoz

本文的主要内容

  • glide 是什么
  • glide 的基本使用
  • glide 最核心的三个方法
  • glide 常用的方法

一、glide 是什么

glide 是一个强大的 ImageLoader,在图片加载库烂大街的今天,选择一个适合我们自己使用的图片加载库无疑能调高我们的开发效率,此外还能让我们写的 APP 更加的优秀。

其实,glide 在前几年的时候,还没有多少人使用,当时较流行 UniversalImageLoader、Picasso。等到 Google 推荐了之后就开始流行起来了,如果实在不知道选什么图片加载框架,跟着 Google 爸爸走,总是没错的。

二、glide 的基本使用

我们先来看一下 glide 的基本用法

1、在 app/build.gradle 中添加依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
}
2、glide 三步曲
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    private Button mBtnShowInfo;
    private ImageView mIvTest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtnShowInfo = (Button) findViewById(R.id.main_btn_show_image);
        mIvTest = (ImageView) findViewById(R.id.main_iv_show_image); 
        mBtnShowInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = "http://ww3.sinaimg.cn/large/7a8aed7bgw1eswencfur6j20hq0qodhs.jpg";
                Glide.with(MainActivity.this).load(url).into(mIvTest);
            }
        });
    }

是的没错,代码就是这么简洁,如果没有特殊要求的话,基本上一行代码就可以搞定图片加载,下面来看下加载的效果。

福利.gif

可以看到图片加载的速度是非常快的,基本上是瞬间加载完成的(别问我为什么加载妹子的图片,我乐意)

3、最后别忘了加载网络图片需要加上网络权限
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <uses-permission android:name="android.permission.INTERNET"/>

三、glide 最核心的三个方法

上一节中讲到了 glide 的三步曲,现在就让我来具体讲一下这三个方法

1、with()

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

2、load()

这个方法用于指定待加载的图片资源。Glide 支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri 对象等等。因此 load() 方法也有很多个方法重载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 加载 Uri 对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
3、into()

这个方法就很简单了,我们希望让图片显示在哪个 ImageView 上面,就把这个 ImageView 的实例传进去就行了。当然,into() 方法并不仅仅只能接收 ImageView 类型的参数,还支持很多更丰富的用法

四、glide 常用的方法

方法名

功能

placeholder()

在图片的加载过程中,我们先显示一张临时的图片,等图片加载之后再替换成要加载的图片

diskCacheStrategy()

设置磁盘缓存的策略,一共有四个参数。 DiskCacheStrategy.NONE:什么都不缓存 DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像 、DiskCacheStrategy.RESULT:仅仅缓存最终的图像 DiskCacheStrategy.ALL:缓存所有版本的图像(默认行为)

error()

当我们因为某些异常情况导致图片加载失败,比如说手机网络信号不好,这时候就会显示出 error() 中设置的图片,可以改善下用户体验

override()

其实 glide 是相当智能的,我们在绝大多数情况下都不需要知道那个图片的大小,因为 glide 从来不会直接将图片的完整尺寸全部加载到内存中,而是用多少加载多少,如果我们真的有指定图片大小这种需求的话,调用 override() 方法就好了

以上便是本文的全部文章,具体的代码我已经上传到 Github 上了,有兴趣的可以 点击这里

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.05.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android图片加载框架最全解析(一),Glide的基本用法
用户1158055
2018/01/08
2.4K0
Android图片加载框架最全解析(一),Glide的基本用法
Anroid笔记:Android图片加载框架Glide用法
Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。
程思扬
2022/01/11
7900
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
用户1158055
2018/01/08
2.7K0
Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
Android图片加载库:最全面解析Glide用法
前言 上文已经对当今Android主流的图片加载库进行了全面介绍 & 对比 如果你还没阅读,我建议你先移步这里进行查看 今天我们来学习一下其中一个Android主流的图片加载库的使用 - Gl
Carson.Ho
2019/02/22
3.6K0
Carson带你学Android:最全面解析图片加载库Glide用法
api也提供了几个常用的动画:比如crossFade() R.anim.item_alpha_in
Carson.Ho
2022/03/24
8900
Carson带你学Android:最全面解析图片加载库Glide用法
android图片加载库Glide
什么是Glide? Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中。 Glide解决什么问题? Glide是一个非常成熟的图片加载库,他可以从多个源加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消耗。 Glide怎么使用? 在Glide的使用方面,它和Picasso的使用方法是比较相似的,并且他们的运行机制也有很
xiangzhihong
2018/02/01
1.9K0
android图片加载库Glide
Android图片加载框架最全解析(四),玩转Glide的回调与监听
用户1158055
2018/01/08
2.8K0
Android图片加载框架最全解析(四),玩转Glide的回调与监听
Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存库的联系与区别
前言 Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片比较。在Android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里介绍一下Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide的一些使用以及最基本的用法介绍。 本文主要从以下几个方面对上述5个图片库做一个简
xiangzhihong
2018/02/06
1.4K0
Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存库的联系与区别
深入理解Glide(1)——Glide的使用
在Android开发过程中,我们常常需要涉及大量的图片加载,图片加载框架设计,是Android高级开发工程师必备的技能,本节将通过分析Glide图片加载框架,来学习如何设计一个图片加载框架。
老马的编程之旅
2022/06/22
7840
Android Glide加载图片、网络监听、设置资源监听
  在日常开发中使用url加载图片是常见的。这也是Glide图片加载框架这么受欢迎的原因。当然本文如果只是简单的加载一个图片出来那就完全没有必要了,自然要搞点花里胡哨的事情才行。补充知识:Glide (音译:哥来德)
晨曦_LLW
2021/01/05
5.7K0
Android Glide加载图片、网络监听、设置资源监听
Android面试之5个Glide深度面试题
解答: Glide的缓存机制包括内存缓存和磁盘缓存,以提高图片加载的性能和减少网络请求。
AntDream
2024/10/29
2820
Android面试之5个Glide深度面试题
Android图片加载框架最全解析(五),Glide强大的图片变换功能
用户1158055
2018/01/08
1.9K0
Android图片加载框架最全解析(五),Glide强大的图片变换功能
Glide类似You cannot start a load for a destroyed activity异常简单分析
根据异常的提示,我们可以确定问题应该是出在了Glide.with(context) 中的context 我们点到源码中看一下 Glide.with() 是怎么实现的。
程思扬
2022/01/10
3870
Glide类似You cannot start a load for a destroyed activity异常简单分析
Android源码分析:这是一份详细的图片加载库Glide源码讲解攻略
注:从上面可看出,Glide不仅解决了 图片异步加载 的问题,还解决了Android加载图片时的一些常见问题,功能十分强大。
Carson.Ho
2019/02/22
1.3K0
基于Glide的二次封装
更多代码可以查询本人GitHub:欢迎阅读,star点起来。 Glide二次封装库源码
先知先觉
2019/01/21
1.2K0
一起来看看 Android 官推 kotlin-first 的图片加载库
Coil 是一个非常年轻的图片加载库,在 2020 年 10 月 22 日才发布了 1.0.0 版本,但却受到了 Android 官方的推广,在 Android Developers Backstage 这个博客中专门聊过一期。推广的原因比较简单:一方面是这个库确实做得很好,另一方面是这个库完全是用 Kotlin 写的,而且运用了大量 Kotlin 的特性,尤其是协程。所以 Google 嘴上说着不会放弃 Java,但实际上咱们都懂的。
developerHaoz
2021/04/09
9350
一起来看看 Android 官推 kotlin-first 的图片加载库
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
用户1158055
2018/01/08
2.7K0
Google推荐的图片加载库Glide:最新版使用指南(含新特性)
Glide是一个Android的图片加载和缓存库,它主要专注于大量图片的流畅加载,Glide几乎可以胜任任何你需要使用到图片从网络拉取,压缩,显示的场景。
陈宇明
2020/12/15
3.2K0
Google推荐的图片加载库Glide:最新版使用指南(含新特性)
Android 基于 glide 4.0 封装图片加载库
很多时候只要简单的调用一行代码实现图片的高性能加载(对于 glide 这个框架不熟悉的同学,可以看一下我这篇文章 glide 一个强大的图片加载框架 ),使用起来是不是特别的简单?可能你会有疑问,都已经封装得这么好了, 有必要再封装一层么?那你错了,哪怕他已经很完美了,我都会进行相应的封装。
developerHaoz
2018/08/20
1.1K0
Glide源码阅读理解一小时
这篇图、文、表、代码一起组成的 Glide 源码分析的文章是在上一篇文章 Android-Universal-Image-Loader源码分析 中之后的又一篇图片加载框架源码解析,它也具备了 ImageLoader 中讲述了Android一个图片加载库所需要的一些基础必备的:MemoryCahce、DiskCahce Decoder DownLoader 和Executor 等部分。这篇 Glide 的代码分析量可以说至少是 ImageLoader 的3倍多,本来想对 Glide 代码进行拆分,细化每个部分进行讲解这个每个部分讲的更加清楚一些。但最终还是打算整体一篇文章讲完,因为我觉得整体性的学习能更深的的了解到 Glide 的框架的设计之美。
静默加载
2020/05/29
2.5K0
推荐阅读
相关推荐
Android图片加载框架最全解析(一),Glide的基本用法
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文