安卓图片加载框架Gilde的用法

转自:http://blog.csdn.net/guolin_blog/article/details/53759439

gilde 依赖:compile 'com.github.bumptech.glide:glide:3.7.0'

 加载图片只需要一行核心代码:

 Glide.with(this).load(URl).into(imageView);

下面就让我们来解析这行代码

首先gilde.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类型的参数,还支持很多更丰富的用法,不过那个属于高级技巧

Gilde占位图

上面的一行代码是Gilde最核心的东西而后面我们所加载的东西是在基础上不断扩展的

首先因为图片从网络上加载出来是需要时间的所以我们在进入用户界面的时候图片要稍等一会儿才能出来那么我们能不能有办法自己用户体验呢,当然可以 Gilde提供了各种各样的丰富的APL支持 其中就包括了gilde占位符

Glide.with(this)

    .load(url)

    .placeholder(“占位图片”)

     .into(imageView);

就只是在核心代码之间插入了一个placeholder()方法,当然这个占位图的用法也展示了Gilde其他APL的用法就是在loadinto之间添加任意想添加的功能就可以了

 

当你第一次加载图片的时候图片会从网络上请求这个时候图片就已经自动缓存下来了,第二次加载的时候回直接从缓存读取因为速度比从网络上加载来的快所以你会看不到占位图片的显示,所以我们还要添加一行代码作用就是禁止缓存

.diskCacheStrategy(DiskCacheStrategy.NONE)


 

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

Glide.with(this)

    .load(url)

    .placeholder(R.drawable.loading)

    .error(R.drawable.error)

    .diskCacheStrategy(DiskCacheStrategy.NONE)

     .into(imageView);

很简单,这里又串接了一个error()方法就可以指定异常占位图了。

 Gilde还有一个强大的功能就是支持占位符,当然也不需要添加任何代码,只需要得到动态图的地址就可以了 也就是说不管我们传入的是一张静态图还是一张动态图Gilde都会自行判断。

但是我如果想拿到动态图片禁止状态呢 也就是指定图片格式 我们只需要添加一个方法就可以了。

在load()方法的后面加入了一个asBitmap()方法,这个方法的意思就是说这里只允许加载静态图片,不需要Glide去帮我们自动进行图片格式的判断了。当然展示的静态图是动态图的第一帧。

猜你喜欢

转载自blog.csdn.net/anqidaimaasm/article/details/80586702