图片加载显示框架Glide使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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中的使用,很简单,一句代码就搞定了。

猜你喜欢

转载自blog.csdn.net/lin_dianwei/article/details/82692979