Glide的基本用法

為什么要學Glide圖片加載框架。Glide是Google官方推薦的圖片加載框架。

1.Glide使用前的配置

1.1配置依賴

Android studio 的配置:

app/build.gradle文件當中添加如下依賴:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

Eclipse的配置

jar包的地址:
http://central.maven.org/maven2/com/github/bumptech/glide/glide/3.7.0/glide-3.7.0.jar

1.2 設置網(wǎng)絡權限

在AndroidManifest.xml中聲明一下網(wǎng)絡權限才行:

<uses-permission android:name="android.permission.INTERNET" />

2.加載圖片--最基本的使用方式

2.1 最基本的使用

public void loadImageGlide(View view) {
    String url = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
    Glide.with(this).load(url).into(imageView);
}

效果如下:

Gif_20170730_222337.gif

實際上核心的代碼就只有這一行而已:

Glide.with(this).load(url).into(imageView);

2.1 Glide.with(this).load(url).into(imageView)的解析

2.1.1 with()方法 --> 控制生命周期

Glide.with()方法的創(chuàng)建一個加載圖片的實例。with()方法的參數(shù)可以接收,Context,Activity或者Fragment類型的參數(shù)。

注意:with()方法傳不同類型的參數(shù)決定了Glide加載圖片的生命周期。當傳入是Activity或者Fragment的實例,那么當這個Activity或者Fragment銷毀的時候,Glide圖片加載也會停止。

2.1.2 load()方法 --> 從哪里來

這個方法用于指定要加載的圖片的內(nèi)容。
除了加載Uri圖片外,Glide還支持

// 加載本地圖片
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(uri).load(image).into(imageView);

2.1.3 into()方法 --> 到哪里去

要把圖片顯示到哪里。顯示到ImageViewd上,就傳入ImageView的實例就可以了。
當然into方法不僅僅只能接受ImageView類型的參數(shù),還支持很多跟豐富的用法,那些屬于高級技巧,以后有時間會再講。

2.2 總結(jié)

總結(jié):Glide最基本的使用方式,就三步,1.先with() 設置圖片加載的生命周期,2再load() 圖片資源從哪里來,3.最后into()把圖放哪里。掌握這三步,你就是算已經(jīng)入門Glide了。

3. 占位符

前提:從網(wǎng)絡加載圖片,圖片有可能不能立馬顯示出來,給用戶一個空白,影響用戶體驗。應該顯示一張加載中的臨時圖,等圖片加載完成,就替代臨時圖,來提高用戶體驗。

3.1設置加載中占位圖

在load()和into() 之間加入placeholder()方法,然后將占位圖片的資源id傳入到這個方法中即可。

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .into(imageView);

但是你現(xiàn)在點加載方法,很可能看不到占位符。因為Glide有非常強大的緩沖機制,會自動緩沖加載過的圖片。下載加載會直接從緩沖中讀取,而不會再去網(wǎng)絡去下載,因此加載的速度非???,所以展位圖可能根本來不及顯示。
為了看得到占位圖,禁止Glide的緩沖功能。

禁止Glide的緩沖功能。
Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .diskCacheStrategy(DiskCacheStrategy.NONE)//禁用掉Glide的緩存功能
     .into(imageView);

效果如下:

設置加載中占位圖.gif

其實Glide當中絕大多數(shù)API的用法,其實就是在load()和into()方法之間串接任意想添加的功能就可以了。

3.2 設置異常占位圖

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)//設置異常占位符
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

4 指定圖片格式

Glide支持顯示gif圖。

4.1 設置gif動態(tài)圖

    String url = "http://s1.dwstatic.com/group1/M00/C3/AC/4a5697ed8f6b73be31fa8e4c8d445370.gif";
    Glide.with(this)
    .load(url)
    .placeholder(R.drawable.loading)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .into(ImageView);

其實就是把uri改成gif圖的資源就行了。Glide內(nèi)部會自動判斷圖片的格式
效果圖如下:

設置gif動態(tài)圖.gif

想指定圖片的格式怎么辦?

4.1 指定加載的圖片僅為靜態(tài)圖片

Glide.with(this)
     .load(url)
     .asBitmap()//設置只允許加載靜態(tài)圖片,如果uri是gif就顯示第一幀的圖片。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

效果如下:

指定加載的圖片僅為靜態(tài)圖片.gif

4.3 指定加載的圖片僅為gif動態(tài)圖片

Glide.with(this)
     .load(url)
     .asGif()//設置只允許加載gif圖片,如果uri是靜態(tài)圖片就顯示error的占位圖。
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

效果如下:

指定加載的圖片僅為gif動態(tài)圖片.gif

指定圖片大小

實際上,使用Glide在絕大多數(shù)情況我們都是不需要指定圖片的大小的。

概念:就是我們平時在加載圖片的時候很容易會造成內(nèi)存浪費。什么叫內(nèi)存浪費呢?比如說一張圖片的尺寸是10001000像素,但是我們界面上的ImageView可能只有200200像素,這個時候如果你不對圖片進行任何壓縮就直接讀取到內(nèi)存中,這就屬于內(nèi)存浪費了,因為程序中根本就用不到這么高像素的圖片

而使用Glide,我們完全不需要擔心圖片內(nèi)存浪費。因為Glide會自動判斷ImageView控件的大小,然后對圖片進行壓縮,再顯示到ImageView上的。

硬要設置圖片的大小也是可以的。

設置圖片的大小實現(xiàn)

Glide.with(this)
     .load(url)
     .placeholder(R.drawable.loading)
     .error(R.drawable.error)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .override(100, 100)//將圖片加載成100*100像素的尺寸
     .into(imageView);

效果如下:

設置圖片的大小.gif

參考博客:
http://blog.csdn.net/guolin_blog/article/details/53759439?utm_source=tuicool&utm_medium=referral

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容