【封裝】圖片載入框架Glide使用
阿新 • • 發佈:2019-01-07
一直在用UIL(Android-Universal-Image-Loader)載入圖片,自我感覺載入使用還不錯,後來同事告訴我有個新玩意Glide,於是我就搜了下這個東西,發現確實好用太多了,在說Glide框架之前,先來看看一些主流的圖片框架,這樣你也可以去搜搜別的框架,然後學到東西也能寫個文章來分享下。
圖片主流載入框架:
名稱 |
描述 |
Android Universal Image Loader |
一個強大的載入,快取,展示圖片的庫 |
Picasso |
一個強大的圖片下載與快取的庫 |
Fresco |
一個用於管理影象和他們使用的記憶體的庫 |
Glide |
一個圖片載入和快取的庫 |
Android Universal Image Loader
ImageLoder的配置很多,所以靈活度較高。
Picasso
Square公司的開源專案可以與旗下的各種框架整合使用,例如okhttp。
Fresco
Facebook公司出品的一個功能強大的框架,其內建的SimpleDraweeView可以實現很多種圖片樣式,其在5.0以下的記憶體優化很好。
Glide
Gilde的使用很像是Picasso,所以你掌握了他們其中一個的話,另一個很快就能掌握了,這個是谷歌官方推薦使用的圖片載入框架,它與Picasso的不同點在於記憶體上的優化,Picasso預設的bitmap格式為ARGB_8888,而Gilde的Bitmap格式為RGB_565,所以Picasso的記憶體消耗要比Gilde的消耗大上一半。
開始使用Gilde
1.基本使用
首先我們來載入一張很簡單的網路圖片
程式碼:
佈局檔案:package com.yckj.project.activity; import com.bumptech.glide.Glide; import com.yckj.project.R; import android.app.Activity; import android.os.Bundle; import android.widget.ImageView; public class LoadPictureActivity extends Activity{ private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_imageview); imageView = (ImageView) findViewById(R.id.img);//初始化View String url = "http://neitui123-data.stor.vipsinaapp.com/neitui/company/104654/photo_icon.png"; Glide.with(this).load(url).into(imageView);//載入圖片 } }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="loading_image" />
</LinearLayout>
2.其他使用方法
其餘的使用方法有很多,所以這裡我直接給出封裝好的工具類,如果你有興趣也可以自己手動來使用下
import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import android.content.Context;
import android.widget.ImageView;
/**
* 開源圖片框架Gilde工具類
*/
public class GildeUtils {
/**
* 載入圖片
*
* @param url
* @param context
* @param imageView
*/
public static void loadImage(String url, Context context, ImageView imageView) {
Glide.with(context).load(url).into(imageView);
}
/**
*
* 是否禁止磁碟快取載入圖片
*
* @param url
* @param context
* @param imageView
* @param type
* 快取的型別
* <li>磁碟快取全部 DiskCacheStrategy.ALL</li>
* <li>磁碟禁止快取DiskCacheStrategy.NONE</li>
*/
public static void loadImage(String url, Context context, ImageView imageView, DiskCacheStrategy type) {
Glide.with(context).load(url).diskCacheStrategy(type).into(imageView);
}
/**
*
* 是否禁止記憶體快取載入圖片
*
* @param url
* @param context
* @param imageView
* @param skipMemoryCache
* 禁止記憶體快取 true為禁止
*/
public static void loadImage(String url, Context context, ImageView imageView, boolean skipMemoryCache) {
Glide.with(context).load(url).skipMemoryCache(skipMemoryCache).into(imageView);
}
/**
*
* 是否禁止記憶體/磁碟快取載入圖片
*
* @param url
* @param context
* @param imageView
* @param type
* 快取的型別
* <li>磁碟快取全部 DiskCacheStrategy.ALL</li>
* <li>磁碟禁止快取DiskCacheStrategy.NONE</li>
* @param skipMemoryCache
* 禁止記憶體快取 true為禁止
*/
public static void loadImage(String url, Context context, ImageView imageView, DiskCacheStrategy type,
boolean skipMemoryCache) {
Glide.with(context).load(url).skipMemoryCache(skipMemoryCache).diskCacheStrategy(type).into(imageView);
}
/**
* 清除記憶體中的快取 必須在UI執行緒中呼叫
*
* @param context
*/
public static void clearMemory(Context context) {
Glide.get(context).clearMemory();
}
/**
* 清除磁碟中的快取 必須在後臺執行緒中呼叫,建議同時clearMemory()
*
* @param context
*/
public static void clearDiskCache(Context context) {
Glide.get(context).clearDiskCache();
}
/**
* 優先順序載入圖片
* @param url
* @param context
* @param imageView
* @param priority 優先順序 Priority.LOW/Priority.HIGH
*/
public static void loadImageWithPriority(String url, Context context, ImageView imageView,Priority priority) {
Glide.with(context).load(url).priority(priority).into(imageView);
}
}
執行效果: