上周我們了解了用 Glide 的理由和簡單的示例來加載一個來自網絡的圖片。但這不僅僅 Glide 的唯一加載來源。Glide 也能從 Android 資源,文件和 Uri 中加載。在這篇博客中,我們將涉及這三個選項。
**從資源中加載?**
首先從Android 資源中加載,使用一個資源 id (`int`),來替換之前使用字符串去指明一個網絡 URL 的情況。
~~~
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
~~~
如果你對于 R.mipmap 有困惑,這是 Android 處理 icon 的[新方式](http://android-developers.blogspot.de/2014/10/getting-your-apps-ready-for-nexus-6-and.html)。
當然,你可以直接為 ImageView 類去設置資源。然而,如果你用的高級話題如動態轉換來說,這可能是比較有趣的。
**從文件中加載**?
其次是從文件中加載,當你讓用戶選擇一張照片去顯示圖像(比如畫廊)這可能會比較有用。該參數只是一個`文件`對象。我們看一個例子:
~~~
//這個文件可能不存在于你的設備中。然而你可以用任何文件路徑,去指定一個圖片路徑。
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
~~~
**從 Uri 中加載**?
最后,你也指定一個 `Uri` 來加載圖片。該請求和之前的沒有什么不同。
~~~
//這可能是任何 Uri。為了演示的目的我們只是用一個 launcher icon 去創建了一個 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` 不必從資源中去生成,它可以是任何 `Uri`。
**展望?**
基本的加載原則已經完成,現在我們可以看看更多有趣的東西。下周我們 在 `ListView` 和 `GridView` 中去適配 adapter。
- 前言
- 一開始
- 二加載進階
- 三ListAdapter(ListView, GridView)
- 四占位符 和 漸現動畫
- 五圖片重設大小 和 縮放
- 六顯示 Gif 和 Video
- 七緩存基礎
- 八請求優先級
- 九縮略圖
- 十回調:SimpleTarget 和 ViewTarget 用于自定義視圖類
- 十一加載圖片到通知欄和應用小部件中
- 十二異常:調試和錯誤處理
- 十三自定義轉換
- 十四用 animate() 自定義動畫
- 十五集成網絡棧
- 十六用 Module 自定義
- 十七Module 實例:接受自簽名證書的 HTTPS
- 十八Module 實例:自定義緩存
- 十九Module 實例:用自定義尺寸優化加載的圖片
- 二十動態使用 Model Loader
- 二十一如何旋轉圖像
- 二十二系列綜述