版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lin_dianwei/article/details/82692979
开发应用,经常需要加载网络图片来显示。
如果自己去下载后显示出来,遇到大量的图片显示,处理有些麻烦,缓存也可能会很大。
当然这些都可以想办法处理,但是需要耗费很多时间。
所以有很多第三方的框架,实现了这些功能,能自动加载图片并显示,也能控制缓存大小,甚至可以根据界面的生命周期自动加载和暂停,使用非常方便。
以前使用过Picasso框架好长一段时间,但是非常小的概率会测到图片显示一半的情况。后来改用了Glide框架,再也没测到过有什么bug了。
所以这里介绍下Glide的使用,这东西也是有些小坑,但是问题不大,按照以下方法,没测到什么问题。
使用方法:
一、添加依赖
compile 'com.github.bumptech.glide:glide:3.7.0'
二、封装工具类
package com.dway.utils;
import android.content.Context;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
/**
* 需要依赖:compile 'com.github.bumptech.glide:glide:3.7.0'
* Created by ldw on 2018/4/10.
*/
public class GlideUtil {
/**
* 加载图片
* @param imageView 显示的控件
* @param url 图片地址
* @param errResId 加载失败时的图片
*/
public static void loadPic(Context context, ImageView imageView, String url, int errResId){
Glide.with(context.getApplicationContext())
.load(url)
.asBitmap()
.placeholder(errResId)
.error(errResId)
.centerCrop()
//.dontAnimate()
.into(imageView);
}
/**
* 可以传入Activity、fragment等,会自动根据activity或fragment的生命周期加载和暂停加载
*/
public static void loadPicWithLifeCycle(Context context, ImageView imageView, String url, int errResId){
Glide.with(context)
.load(url)
.asBitmap()
.placeholder(errResId)
.error(errResId)
.centerCrop()
//.dontAnimate()
.into(imageView);
}
/**
* 不用缓存加载图片
* @param imageView 显示的控件
* @param url 图片地址
* @param errResId 加载失败时的图片
*/
public static void loadPicWhihoutCache(ImageView imageView, String url, int errResId){
Glide.with(MyApp.getContext())
.load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.placeholder(errResId)
.error(errResId)
.into(imageView);
}
}
注意得这样写,最开始我按自己的想法调用了一些方法,出现一些奇怪的问题,具体不太记得了,可以自己写个试下,但这样写法目前是没问题的。
三、使用
扫描二维码关注公众号,回复:
3288040 查看本文章
GlideUtil.loadPic(context, itemHolder.iconView, dataList.get(position).cover, R.drawable.icon_loading);
这是在RecyclerView中的使用,很简单,一句代码就搞定了。