Android图片加载框架:Glide的基本用法

一 Glide的基本用法:

声明:本文是基于郭霖大神的CSDNAndroid图片加载框架最全解析(一),Glide的基本用法博客学习,自己总结,方便后续学习使用,原文链接戳此处郭霖大神CSDN

1.1添加依赖

目前,Glide最新的稳定版本是3.7.0;在app/build.gradle文件当中添加如下依赖

dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

Glide中加载网络图片需要用到网络功能,因此你还得在AndroidManifest.xml中声明一下网络权限才行:


二 基本使用

先看下效果图:简单的加载一张图片

Android图片加载框架:Glide的基本用法_第1张图片
image.png

2.1 xml中布局



    

2.2 找到控件,设置图片

ImageView img = (ImageView) findViewById(R.id.image);
    Glide.with(this)
         .load(R.drawable.meinv)
         .into(img);

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

看下load()这个方法:
这个方法用于指定待加载的图片资源。Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri对象等等。因此load()方法也有很多个方法重载,除了我们刚才使用的加载一个字符串网址之外,你还可以这样使用load()方法:

// 加载本地图片
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);

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


Glide最基本的使用方式,其实就是关键的三步走:先with(),再load(),最后into()。


2.3 占位图

占位图就是指在图片的加载过程中,我们先显示一张临时的图片,等图片加载出来了再替换成要加载的图片。
图片Url错误时,显示占位图(只是为了显示占位图)

ImageView img = (ImageView) findViewById(R.id.img);
        Glide.with(this)
                .load("wwww")
                .placeholder(R.drawable.test)
                .into(img);
    }
Android图片加载框架:Glide的基本用法_第2张图片
image.png

修改代码如下:

 ImageView img = (ImageView) findViewById(R.id.img);
        Glide.with(this)
                .load(R.drawable.dog)
                .placeholder(R.drawable.test)
                .into(img);

成功后显示load加载的图片


Android图片加载框架:Glide的基本用法_第3张图片
image.png

就是这么简单。我们只是在刚才的三步走之间插入了一个placeholder()方法,然后将占位图片的资源id传入到这个方法中即可。另外,这个占位图的用法其实也演示了Glide当中绝大多数API的用法,其实就是在load()和into()方法之间串接任意想添加的功能就可以了。

当然,这只是占位图的一种,除了这种加载占位图之外,还有一种异常占位图。异常占位图就是指,如果因为某些异常情况导致图片加载失败,比如说手机网络信号不好,这个时候就显示这张异常占位图。

 ImageView img = (ImageView) findViewById(R.id.img);
        Glide.with(this)
                .load("www")
                .placeholder(R.drawable.test)
                .error(R.drawable.error)
                .into(img);

串接了一个error()方法就可以指定异常占位图了。
显示如下:


Android图片加载框架:Glide的基本用法_第4张图片
image.png

这样我们就把Glide提供的占位图功能都掌握了

2.4 指定图片格式

Glide另外一个强大的功能,那就是Glide是支持加载GIF图片的
Glide加载GIF图并不需要编写什么额外的代码,Glide内部会自动判断图片格式。比如这是一张GIF图片的URL地址:

http://p1.pstatp.com/large/166200019850062839d3

只需要将刚才那段加载图片代码中的URL地址替换成上面的地址就可以了,运行后结果:


demo.gif

也就是说,不管我们传入的是一张普通图片,还是一张GIF图片,Glide都会自动进行判断,并且可以正确地把它解析并展示出来。
指定图片的格式该怎么办呢?就比如说,我希望加载的这张图必须是一张静态图片,我不需要Glide自动帮我判断它到底是静图还是GIF图。

想实现这个功能仍然非常简单,我们只需要再串接一个新的方法就可以了,如下所示:

Glide.with(this)
                .load(R.drawable.dynamic)
                .asBitmap()
                .into(img);

在load()方法的后面加入了一个asBitmap()方法,这个方法的意思就是说这里只允许加载静态图片,不需要Glide去帮我们自动进行图片格式的判断了。
运行程序,结果如下


Android图片加载框架:Glide的基本用法_第5张图片
图片.png

调用了asBitmap()方法,现在GIF图就无法正常播放了,而是会在界面上显示第一帧的图片。

类似地,我们能强制指定加载静态图片,就也能强制指定加载动态图片。比如说我们想要实现必须加载动态图片的功能,就可以这样写:

Glide.with(this)
              .load(R.drawable.dynamic)
              .asGif()
              .into(img)

如果指定了只能加载动态图片,而传入的图片却是一张静图的话,那么结果自然就只有加载失败.

你可能感兴趣的:(Android图片加载框架:Glide的基本用法)