Glide — 高級加載
原文:Advanced Loading
作者:Norman Peitek
翻譯:Dexter0218
上一篇文章,我們一起了解了為何要使用Glide,并舉了個簡單栗子(從網絡加載一張圖片)。但這并不是Glide唯一支持的圖片源。在這篇文章中,將要介紹Glide如何從Android資源、文件和Uri中獲取圖片并加載。
Glide 系列概覽
- 入門簡介
- 高級加載
- 適配器(ListView, GridView)
- 占位圖& 淡入淡出動畫
- 圖片大小 & 縮放
- 播放GIF & 視頻
- 緩存基礎
- 請求優先級
- 縮略圖
- 回調:定制view中使用SimpleTarget和ViewTarget
- 通知欄和桌面小控件的圖片加載
- 異常: 調試和報錯處理
- 自定義變換
- 用animate()定制動畫
- 整合網絡協議棧
- 用Modules定制Glide
- Glide Module 案例: 接受自簽名HTTPS證書
- Glide Module 案例: 自定義緩存
- Glide Module 案例: 通過加載自定義大小圖片優化
- 動態使用 Model Loaders
- 如何旋轉圖片
- 系列綜述
從Res資源中加載
首先介紹從Android資源中加載。不同于上一節的String類型的網絡URL,這里是一個Int型的的資源id。
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
如果你覺得R.mipmap.沒見過, 這是Android的一個處理圖標的新方法。
雖然,你可以直接在ImageView的屬性里添加這一資源。但是,如果你使用Glide這種更高級的方式進行動態轉換,你的應用可以做得非常有趣。
從文件中加載
從資源文件加載,通常是固定的,當你讓用戶任意選擇一張圖片來顯示的時候,這個文件的路徑并非是開發人員預先設定的,從圖片文件中加載對于實際應用將會非常有用。需要傳遞的參數也僅僅是一個文件對象,舉個栗子:
// this file probably does not exist on your device. However, you can use any file path, which points to an image file
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
從Uri加載
最后介紹從Uri中加載圖片,這里的請求跟上面的方法并無太大差異,直接看代碼:
// 這個可以是任何Uri. 這里為了演示,我們只創建了一個指向桌面圖標的Uri
Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);
Glide
.with(context)
.load(uri)
.into(imageViewUri);
下面一個小的工具函數可以將資源id轉換為一個Uri:
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";
private static Uri resourceIdToUri(Context context, int resourceId) {
return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}
當然,Uri并不一定是從資源id中創建,它可以是任意Uri。
展望
基本的加載方法都已經介紹了。我們將會去探索一些更有趣的東西. 下一篇文章,將要介紹ListView和GridView中適配器的使用和用Glide進行緩存。