入行學習Android這門技術已經快一年了,自己也一直在培養寫部落格的習慣,每次通過自己的學習探索到新的知識領域,同時分享給大家都非常高興。
最近公司一直在做圖檔的加載的相關的東西,看了一遍郭霖大神的Glide的講解,在這裡自己做一下總結。
Glide基礎的學習
Glide是一款由Bump Technologies開發的圖檔加載架構,使得我們可以在Android平台上以極度簡單的方式加載和展示圖檔。
目前,Glide最新的穩定版本是3.7.0,雖然4.0已經推出RC版了,但是暫時問題還比較多。是以,我們這個系列的部落格都會使用Glide 3.7.0版本來進行講解,這個版本的Glide相當成熟和穩定。
在項目中使用Glide首先要添加依賴。
加載圖檔少不了網絡,是以接下來就是添加網絡權限。
接下來你就可以來感受Glide的強大的圖檔加載功能了。
加載靜态的圖檔
首先你要有一個帶加載的圖檔的url位址。
String url = "http://guolin.tech/test.gif";
接下來在布局中下一個包含按鈕和圖檔加載控件的xml檔案
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Load Image"
android:onClick="loadImage"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
接下來就是去activity中實作加載圖檔的代碼的任務了
Glide.with(this)
.load(url)
.into(ImageView)
沒錯就是這麼簡單一行代碼加載OnCreate()中就将剛剛位址的圖檔加載出來了不過這了隻是簡單的加載,後續還可以添加好多功能。
接下來看一下load()方法,這個方法用于指定待加載的圖檔資源。Glide支援加載各種各樣的圖檔資源,包括網絡圖檔、本地圖檔、應用資源、二進制流、Uri對象等等。是以load()方法也有很多個方法重載,除了我們剛才使用的加載一個字元串網址之外,你還可以這樣使用load()方法:
// 加載本地圖檔
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);
// 加載應用資源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);
// 加載二進制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加載Uri對象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
剛剛我們學習的是glide的最核心的東西我們可以在這個基礎上擴充好多東西接下來聽小黑慢慢墨迹。
- 占位圖:就是在圖檔下載下傳的時候使用一張預設的圖檔代替加載的圖檔的位置,改善使用者的體驗。
.placeholder(R.drawable.loading)
在加載的url和顯示的控件之間使用placeholder(resourceId)指定占位圖。
- 指定加載異常的圖檔:就是在加載圖檔的時候出錯的時候顯示的圖檔。
.error(R.drawable.error)
添加的位置和placeholder的位置是相同的
- Glide還有一個強大的功能就是加載動态圖,我們把原來的加載的資源的位址修改為一個動态圖的位址就可以實作加載動态圖,我們還可以通過asBitmap()将動态圖加載為靜态圖檔。
- 指定圖檔的大小
.override(, )
在圖檔加載到控件之前調用這個方法修改圖檔的大小。