Android图片之Glide(一),Glide的基本用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leiyaqiang/article/details/78884968

Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。

使用:
在使用glide的时候,需要将glide的依赖添加到我们的工程中,在新建完过程以后在app/build.gradle文件当中添加如下依赖:

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

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

<uses-permission android:name="android.permission.INTERNET" />

添加完事儿以后,我们就可以自由地使用Glide中的功能了。

作为一个资深的Android图片加载库,能够自如的加载图片自然不在话下:

首先在我们的xml文件中写入:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load Image"
        android:onClick="loadImage"
        />

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

通过点击button来实现图片的加载。

然后就是我们的Java文件了:

public class MainActivity extends AppCompatActivity {

    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.image_view);
    }

    public void loadImage(View view) {
        //url为图片地址。
        String url = "http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg";
        //加载图片到imageview
        Glide.with(this).load(url).into(imageView);
    }

}

然后来看一下效果:
这里写图片描述

看到没,就是这么简单,其实关键代码只有一句:

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()方法,这个方法用于指定待加载的图片资源。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的实例传进去就可以了。

那么回顾一下Glide最基本的使用方式,其实就是关键的三步走:先with(),再load(),最后into()。熟记这三步,你就已经入门Glide了。

但是请不要误会,对于glide的功能可不是仅仅就这些:

扩展一下:占位图

Glide.with(this)
     .load(url)
     //这就是占位用的图片
     .placeholder(R.drawable.loading)
     .into(imageView);

到了这里,相信很多性子急的已经跑了一遍,然后说为什么没看到,如果你用的还是刚才的URL,那么,我只能告诉你,图片被缓存了,第二次的加载将会很快,当然,想看也可以:

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     //禁用缓存功能
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

只要再添加一句就好。这样就可以禁用glide的缓存功能。

效果图就不贴了,大家可以试试。

有加载前的占位,那,加载错了怎么办。

不急,也有:

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     //异常情况的占位图
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

看吧,再试试,可以把网络关掉。

接下来是glide的大招
GIF图片的加载:

String url = "http://p1.pstatp.com/large/166200019850062839d3";
        //加载图片到imageview
        Glide.with(this).load(url).into(imageView);

有人会说,为什么一样。

那是因为我们的glide是支持GIF图片的,同时也会自己判断图片格式。

但是,如果我不知道到底是什么格式的图片,只要求加载静态或者动态的怎么办,

Glide.with(this)
     .load(url)
     //指定加载静态图
     .asBitmap()
     //指定加载动态图
     //.asGif()
     //如果指定加载动态图,却出入静态图片地址就会显示加载异常的占位图
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

注释都有写,我就不多说了。

接下来是指定加载图片的大小:

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     //指定图片的大小
     .override(100, 100)
     .into(imageView);

图片呢就不贴了,大家可以试试

先到这里。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页