glide封裝工具類
Google圖片載入庫Glide的簡單封裝GlideUtils
因為專案裡用的Glide的地方比較多,所有簡單的封裝了以下,其實也沒什麼,就是寫了個工具類,但是還是要把基礎說下
Glide的Github
Glide簡單配置
Glide有三種整合的方式
- 1.JAR
- Gradle(推薦)
首先需要在你model的build.gradle裡新增
repositories {
// jcenter() works as well because it pulls from Maven Central
mavenCentral()
}
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
然後在我們的app的build.gradle裡新增
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:24.2.1'
- 1
- 2
- 1
- 2
這裡要注意的是Glide需要V4包的支援,V4包的版本根據你的開發環境來決定
- Maven
<dependency>
<groupId>com.github.bumptech.glide</groupId>
<artifactId>glide</artifactId>
<version>3.7.0</version >
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r7</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Glide簡單使用
Glide是在Picasso的基礎上進行改良的,我們來看下他最基礎的使用方法
ImageView imageView = (ImageView) findViewById(R.id .my_image_view);
Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
- 1
- 2
- 1
- 2
其實很簡單,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);
}
- 1
- 2
- 3
- 1
- 2
- 3
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);
}
- 1
- 2
- 3
- 1
- 2
- 3
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);
}
- 1
- 2
- 3
- 1
- 2
- 3
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);
}
- 1
- 2
- 3
- 1
- 2
- 3
5.設定跳過記憶體快取
public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
6.設定下載優先順序
public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
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);
}
- 1
- 2
- 3
- 1
- 2
- 3
8.設定載入動畫
api也提供了幾個常用的動畫:比如crossFade()
public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) {
Glide.with(mContext).load(path).animate(anim).into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
9.設定縮圖支援
public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
10.設定動態轉換
api提供了比如:centerCrop()、fitCenter()等
public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).centerCrop().into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
11.設定動態GIF載入方式
public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).asGif().into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
12.設定靜態GIF載入方式
public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {
Glide.with(mContext).load(path).asBitmap().into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
13.設定監聽請求介面
設定監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是記憶體還是磁碟
public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) {
Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);
}
- 1
- 2
- 3
- 1
- 2
- 3
14.設定要載入的內容
專案中有很多需要先下載圖片然後再做一些合成的功能,比如專案中出現的圖文混排
public static void loadImageViewContent(Context mContext, String path, SimpleTarget<GlideDrawable> simpleTarget) {
Glide.with(mContext).load(path).centerCrop().into(simpleTarget);
}
- 1
- 2
- 3
- 1
- 2
- 3
15.清理磁碟快取
public static void GuideClearDiskCache(Context mContext) {
//理磁碟快取 需要在子執行緒中執行
Glide.get(mContext).clearDiskCache();
}
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
16.清理記憶體快取
public static void GuideClearMemory(Context mContext) {
//清理記憶體快取 可以在UI主執行緒中進行
Glide.get(mContext).clearMemory();
}
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
當然,我們後續肯定會功能越來越多的,我把專案開源在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>
* none:不作任何磁碟快取
* <p>
* source:快取源資源
* <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();
}
}
相關推薦
glide封裝工具類
Google圖片載入庫Glide的簡單封裝GlideUtils 因為專案裡用的Glide的地方比較多,所有簡單的封裝了以下,其實也沒什麼,就是寫了個工具類,但是還是要把基礎說下 Glide的Github Glide簡單配置 Glide有三種整合的方式 1.
如何呼叫封裝工具類呼叫網上介面查詢工作日
如何呼叫封裝工具類呼叫網上介面查詢工作日 這裡的編輯器是STS,用的springboot整合環境; 先引進pom.xml依賴包 <?xml version="1.0" encoding="UTF-8"?> <project xml
HIbernate -----封裝 工具類 utils(configration---建立sessionFactory--獲得session程式碼重複,封裝程式碼)
package com.itheima.utils; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.classic.Session; //完成
微信小程式:request請求封裝工具類
修改過的封裝請求: header: {'Content-Type': 'application/json'}, 防止引數中敏感字元丟失的問題 header: {'Content-Type': 'application/x-www-form-urlencoded'}, 
HttpUrlConnection+圖片載入+工具類+介面回撥+單例+AsyncTask封裝工具類
1.MainActivity頁面 package com.example.httpurlconnection; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import andro
dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度
man 數據庫工具類 () version 數據庫配置 測試 loader connect not 一、將連接數據庫所需的相關信息寫入到配置文件、通過讀取配置文件來獲取數據庫的相關信息 package edu.aeon.aeonutils; import jav
用hibernate封裝工具類中的查詢方法
可以將以下的方法整合到工具類中,用於以後的使用 public List query(String hql,Object...object){//使用這個類的時候hql語句形式:from 類 where ... //讀取總的配置檔案 Configuratio
Json結果集封裝工具類-使用java的Map
/** * Title: Json * Description: Json結果集封裝工具類* @author zhaoxuehong * @date 2018年11月5日上午9:15:55 */public class Json { /** * * @param status 狀態碼 * @param ms
BeanUtils資料封裝工具類的使用
Java程式碼: package com.java.domain; public class Person { private String name; private int age; private String gender; private String
單機版 RedisPoolUtil({基本操作封裝工具類})【一】
<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&
單機版 JedisUtil({基本操作封裝工具類})【二】
<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&
單機版 RedisUtils({基本操作封裝工具類})【三】
<!--整合的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&
https封裝工具類
package import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.In
ImageLoder封裝工具類..
public class ImageLoaderutils { //初使化 public static void initImageLoader(Context context){ //自定義磁碟快取路徑 系統預設的快取路徑 sd...&l
httpclient封裝工具類
前言 在日常開發中,我們經常需要通過http協議去呼叫網路內容,雖然java自身提供了net相關工具包,但是其靈活性和功能總是不如人意,於是有人專門搞出一個httpclient類庫,來方便進行Http操作。對於httpcore的原始碼研究,我們可能並沒有達到這
Redis封裝工具類
引用到的jedis的封裝類,然後又加了一層封裝 import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.JedisCommands; i
OkHttp網路連線封裝工具類以及json轉換類
public class OkHttpUtils { private static final String TAG = "OkHttpUtils"; private static OkHttpUtils mInstance;
Android 自定義Camera相機(封裝工具類賊簡單)
背景 目前公司的專案都是,針對生物認證來進行一些驗證之類的功能,比方說,互動式活體檢測,人臉1v1(對比),人臉1vN(搜尋)。用系統自帶的相機?當然是不夠用了,不夠用那就自定義啦,就像是前幾天七夕,沒物件怎麼辦,當然是new一個了。對了結尾還提供了一個呼叫極
JFreeChart封裝工具類
package com.wasu.itv.common.util;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.io.File;import java.io
Okhttp3封裝工具類
public class OkHttp3Util { /** * 懶漢 安全 加同步 * 私有的靜態成員變數 只宣告不建立 * 私有的構造方法 * 提供返回例項的靜態方法 */ private static