Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Google圖片加載庫Glide的簡單封裝GlideUtils

Google圖片加載庫Glide的簡單封裝GlideUtils

編輯:關於Android編程

因為項目裡用的Glide的地方比較多,所有簡單的封裝了以下,其實也沒什麼,就是寫了個工具類,但是還是要把基礎說下

Glide的Github

https://github.com/bumptech/glide

Glide簡單配置

Glide有三種集成的方式

1.JAR

點擊下載Glide.jar

Gradle(推薦)

首先需要在你model的build.gradle裡添加

repositories {
    // jcenter() works as well because it pulls from Maven Central
    mavenCentral() 
}

然後在我們的app的build.gradle裡添加

 compile 'com.github.bumptech.glide:glide:3.7.0'
 compile 'com.android.support:support-v4:24.2.1'

這裡要注意的是Glide需要V4包的支持,V4包的版本根據你的開發環境來決定

Maven

  com.github.bumptech.glide
  glide
  3.7.0


  com.google.android
  support-v4
  r7

Glide簡單使用

Glide是在Picasso的基礎上進行改良的,我們來看下他最基礎的使用方法

  ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
  Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);

其實很簡單,with裡支持的比Picasso多很多

Context Activity Fragment FragmentActivity

lode是需要加載的圖片地址,into是賦予的控件,當然還有很多其他的方法,我們等下說

Glide的優點

使用簡單 可配置度高,自適應程度高 支持常見圖片格式 Jpg png gif webp 支持多種數據源 網絡、本地、資源、Assets 等 高效緩存策略 支持Memory和Disk圖片緩存 默認Bitmap格式采用RGB_565內存使用至少減少一半 生命周期集成 根據Activity/Fragment生命周期自動管理請求 高效處理Bitmap 使用Bitmap Pool使Bitmap復用,主動調用recycle回收需要回收的Bitmap,減小系統回收壓力 這裡默認支持Context,Glide支持Context,Activity,Fragment,FragmentActivity

Glide的封裝

1.默認加載

public static void loadImageView(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).into(mImageView);
   }

2.加載指定大小

public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) {
        Glide.with(mContext).load(path).override(width, height).into(mImageView);
    }

3.設置加載中以及加載失敗圖片

public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) {
        Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView);
    }

4.設置加載中以及加載失敗圖片並且指定大小

public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) {
        Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView);
    }

5.設置跳過內存緩存

public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView);
    }

6.設置下載優先級

 public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView);
    }

7.設置緩存策略

策略分為:

all:緩存源資源和轉換後的資源 none:不作任何磁盤緩存 source:緩存源資源 result:緩存轉換後的資源
public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);
    }

8.設置加載動畫

api也提供了幾個常用的動畫:比如crossFade()

public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) {
        Glide.with(mContext).load(path).animate(anim).into(mImageView);
    }

9.設置縮略圖支持

public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);
    }

10.設置動態轉換

api提供了比如:centerCrop()、fitCenter()等

 public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).centerCrop().into(mImageView);
    }

11.設置動態GIF加載方式

public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).asGif().into(mImageView);
    }

12.設置靜態GIF加載方式

 public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).asBitmap().into(mImageView);
    }

13.設置監聽請求接口

設置監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是內存還是磁盤

public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener requstlistener) {
        Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);
    }

14.設置要加載的內容

項目中有很多需要先下載圖片然後再做一些合成的功能,比如項目中出現的圖文混排

public static void loadImageViewContent(Context mContext, String path, SimpleTarget simpleTarget) {
        Glide.with(mContext).load(path).centerCrop().into(simpleTarget);
    }

15.清理磁盤緩存

 public static void GuideClearDiskCache(Context mContext) {
        //理磁盤緩存 需要在子線程中執行
        Glide.get(mContext).clearDiskCache();
    }

16.清理內存緩存

public static void GuideClearMemory(Context mContext) {
        //清理內存緩存  可以在UI主線程中進行
        Glide.get(mContext).clearMemory();
    }

當然,我們後續肯定會功能越來越多的,我把項目開源在Github上了,為了使用起來方便自己封裝了下,同時也分享以下

GlideUtils源碼

package com.liuguilin.gankclient.util;
 
/*
 *  項目名:  GankClient 
 *  包名:    com.liuguilin.gankclient.util
 *  文件名:   GlideUtils
 *  創建者:   LGL
 *  創建時間:  2016/10/20 16:45
 *  描述:    Glide封裝
 */
 
import android.content.Context;
import android.widget.ImageView;
 
import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.SimpleTarget;
 
public class GlideUtils {
 
    /**
     * Glide特點
     * 使用簡單
     * 可配置度高,自適應程度高
     * 支持常見圖片格式 Jpg png gif webp
     * 支持多種數據源  網絡、本地、資源、Assets 等
     * 高效緩存策略    支持Memory和Disk圖片緩存 默認Bitmap格式采用RGB_565內存使用至少減少一半
     * 生命周期集成   根據Activity/Fragment生命周期自動管理請求
     * 高效處理Bitmap  使用Bitmap Pool使Bitmap復用,主動調用recycle回收需要回收的Bitmap,減小系統回收壓力
     * 這裡默認支持Context,Glide支持Context,Activity,Fragment,FragmentActivity
     */
 
    //默認加載
    public static void loadImageView(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).into(mImageView);
    }
 
    //加載指定大小
    public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) {
        Glide.with(mContext).load(path).override(width, height).into(mImageView);
    }
 
    //設置加載中以及加載失敗圖片
    public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) {
        Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView);
    }
 
    //設置加載中以及加載失敗圖片並且指定大小
    public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) {
        Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView);
    }
 
    //設置跳過內存緩存
    public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView);
    }
 
    //設置下載優先級
    public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView);
    }
 
    /**
     * 策略解說:
     * <p>
     * all:緩存源資源和轉換後的資源
     * </p><p>
     * none:不作任何磁盤緩存
     * </p><p>
     * source:緩存源資源
     * </p><p>
     * result:緩存轉換後的資源
     */
 
    //設置緩存策略
    public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);
    }
 
    /**
     * api也提供了幾個常用的動畫:比如crossFade()
     */
 
    //設置加載動畫
    public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) {
        Glide.with(mContext).load(path).animate(anim).into(mImageView);
    }
 
    /**
     * 會先加載縮略圖
     */
 
    //設置縮略圖支持
    public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);
    }
 
    /**
     * api提供了比如:centerCrop()、fitCenter()等
     */
 
    //設置動態轉換
    public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).centerCrop().into(mImageView);
    }
 
    //設置動態GIF加載方式
    public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).asGif().into(mImageView);
    }
 
    //設置靜態GIF加載方式
    public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {
        Glide.with(mContext).load(path).asBitmap().into(mImageView);
    }
 
    //設置監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是內存還是磁盤
 
    //設置監聽請求接口
    public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<string, glidedrawable=""> requstlistener) {
        Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);
    }
 
    //項目中有很多需要先下載圖片然後再做一些合成的功能,比如項目中出現的圖文混排
 
    //設置要加載的內容
    public static void loadImageViewContent(Context mContext, String path, SimpleTarget<glidedrawable> simpleTarget) {
        Glide.with(mContext).load(path).centerCrop().into(simpleTarget);
    }
 
    //清理磁盤緩存
    public static void GuideClearDiskCache(Context mContext) {
        //理磁盤緩存 需要在子線程中執行
        Glide.get(mContext).clearDiskCache();
    }
 
    //清理內存緩存
    public static void GuideClearMemory(Context mContext) {
        //清理內存緩存  可以在UI主線程中進行
        Glide.get(mContext).clearMemory();
    }
 
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved