直接上源碼。注釋得已經很清晰了,直接調用即可。
1 package com.liuguilin.lovewallpaper.utils; 2 /* 3 * Created by 火龍裸先生 on 2017/3/3 0003. 4 */ 5 6 import android.content.Context; 7 import android.widget.ImageView; 8 9 import com.bumptech.glide.Glide; 10 import com.bumptech.glide.Priority; 11 import com.bumptech.glide.load.engine.DiskCacheStrategy; 12 import com.bumptech.glide.load.resource.drawable.GlideDrawable; 13 import com.bumptech.glide.request.RequestListener; 14 import com.bumptech.glide.request.target.SimpleTarget; 15 16 public class GlideUtils { 17 18 /** 19 * Glide特點 20 * 使用簡單 21 * 可配置度高,自適應程度高 22 * 支持常見圖片格式 Jpg png gif webp 23 * 支持多種數據源 網絡、本地、資源、Assets 等 24 * 高效緩存策略 支持Memory和Disk圖片緩存 默認Bitmap格式采用RGB_565內存使用至少減少一半 25 * 生命周期集成 根據Activity/Fragment生命周期自動管理請求 26 * 高效處理Bitmap 使用Bitmap Pool使Bitmap復用,主動調用recycle回收需要回收的Bitmap,減小系統回收壓力 27 * 這里默認支持Context,Glide支持Context,Activity,Fragment,FragmentActivity 28 */ 29 30 //默認加載 31 public static void loadImageView(Context mContext, String path, ImageView mImageView) { 32 Glide.with(mContext).load(path).into(mImageView); 33 } 34 35 //加載指定大小 36 public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) { 37 Glide.with(mContext).load(path).override(width, height).into(mImageView); 38 } 39 40 //填充 41 public static void loadImageCrop(Context mContext, String path, ImageView mImageView) { 42 Glide.with(mContext).load(path).centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); 43 } 44 45 //設置加載中以及加載失敗圖片 46 public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) { 47 Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView); 48 } 49 50 //設置加載中以及加載失敗圖片並且指定大小 51 public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) { 52 Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView); 53 } 54 55 //設置跳過內存緩存 56 public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) { 57 Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView); 58 } 59 60 //設置下載優先級 61 public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) { 62 Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView); 63 } 64 65 /** 66 * 策略解說: 67 * <p> 68 * all:緩存源資源和轉換后的資源 69 * <p> 70 * none:不作任何磁盤緩存 71 * <p> 72 * source:緩存源資源 73 * <p> 74 * result:緩存轉換后的資源 75 */ 76 77 //設置緩存策略 78 public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) { 79 Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); 80 } 81 82 /** 83 * api也提供了幾個常用的動畫:比如crossFade() 84 */ 85 86 //設置加載動畫 87 public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) { 88 Glide.with(mContext).load(path).animate(anim).into(mImageView); 89 } 90 91 /** 92 * 會先加載縮略圖 93 */ 94 95 //設置縮略圖支持 96 public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) { 97 Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView); 98 } 99 100 /** 101 * api提供了比如:centerCrop()、fitCenter()等 102 */ 103 104 //設置動態轉換 105 public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) { 106 Glide.with(mContext).load(path).centerCrop().into(mImageView); 107 } 108 109 //設置動態GIF加載方式 110 public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) { 111 Glide.with(mContext).load(path).asGif().into(mImageView); 112 } 113 114 //設置靜態GIF加載方式 115 public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) { 116 Glide.with(mContext).load(path).asBitmap().into(mImageView); 117 } 118 119 //設置監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是內存還是磁盤 120 121 //設置監聽請求接口 122 public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) { 123 Glide.with(mContext).load(path).listener(requstlistener).into(mImageView); 124 } 125 126 //項目中有很多需要先下載圖片然后再做一些合成的功能,比如項目中出現的圖文混排 127 128 //設置要加載的內容 129 public static void loadImageViewContent(Context mContext, String path, SimpleTarget<GlideDrawable> simpleTarget) { 130 Glide.with(mContext).load(path).centerCrop().into(simpleTarget); 131 } 132 133 //清理磁盤緩存 134 public static void GuideClearDiskCache(Context mContext) { 135 //理磁盤緩存 需要在子線程中執行 136 Glide.get(mContext).clearDiskCache(); 137 } 138 139 //清理內存緩存 140 public static void GuideClearMemory(Context mContext) { 141 //清理內存緩存 可以在UI主線程中進行 142 Glide.get(mContext).clearMemory(); 143 } 144 }