圖片加載顯示框架Glide使用

開發應用,經常需要加載網絡圖片來顯示。

如果自己去下載後顯示出來,遇到大量的圖片顯示,處理有些麻煩,緩存也可能會很大。

當然這些都可以想辦法處理,但是需要耗費很多時間。

所以有很多第三方的框架,實現了這些功能,能自動加載圖片並顯示,也能控制緩存大小,甚至可以根據界面的生命週期自動加載和暫停,使用非常方便。

以前使用過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);
    }

}

注意得這樣寫,最開始我按自己的想法調用了一些方法,出現一些奇怪的問題,具體不太記得了,可以自己寫個試下,但這樣寫法目前是沒問題的。

三、使用

GlideUtil.loadPic(context, itemHolder.iconView, dataList.get(position).cover, R.drawable.icon_loading);

這是在RecyclerView中的使用,很簡單,一句代碼就搞定了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章