glide 一個強大的圖片加載框架

轉載請注明出處
作者:developerHaoz
Github 地址:developerHaoz

本文的主要內容

  • glide 是什么
  • glide 的基本使用
  • glide 最核心的三個方法
  • glide 常用的方法

一、glide 是什么

glide 是一個強大的 ImageLoader,在圖片加載庫爛大街的今天,選擇一個適合我們自己使用的圖片加載庫無疑能調高我們的開發效率,此外還能讓我們寫的 APP 更加的優秀。

其實,glide 在前幾年的時候,還沒有多少人使用,當時較流行 UniversalImageLoader、Picasso。等到 Google 推薦了之后就開始流行起來了,如果實在不知道選什么圖片加載框架,跟著 Google 爸爸走,總是沒錯的。

二、glide 的基本使用

我們先來看一下 glide 的基本用法

1、在 app/build.gradle 中添加依賴

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

2、glide 三步曲

    private Button mBtnShowInfo;
    private ImageView mIvTest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtnShowInfo = (Button) findViewById(R.id.main_btn_show_image);
        mIvTest = (ImageView) findViewById(R.id.main_iv_show_image); 
        mBtnShowInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = "http://ww3.sinaimg.cn/large/7a8aed7bgw1eswencfur6j20hq0qodhs.jpg";
                Glide.with(MainActivity.this).load(url).into(mIvTest);
            }
        });
    }

是的沒錯,代碼就是這么簡潔,如果沒有特殊要求的話,基本上一行代碼就可以搞定圖片加載,下面來看下加載的效果。


福利.gif

可以看到圖片加載的速度是非常快的,基本上是瞬間加載完成的(別問我為什么加載妹子的圖片,我樂意)

3、最后別忘了加載網絡圖片需要加上網絡權限

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

三、glide 最核心的三個方法

上一節中講到了 glide 的三步曲,現在就讓我來具體講一下這三個方法

1、with()

調用 Glide.with() 方法用于創建一個加載圖片的實例。with() 方法可以接收 Context、Activity 或者 Fragment 類型的參數。也就是說我們選擇的范圍非常廣,不管是在 Activity 還是 Fragment 中調用 with() 方法,都可以直接傳 this。如果調用的地方既不在 Activity 中也不在 Fragment 中的話,我們可以直接獲取當前應用的 ApplicationContext,傳入到 with() 方法當中。注意 with() 方法中傳入的實例會決定 Glide 加載圖片的生命周期,如果傳入的是 Activity 或者 Fragment 的實例,那么當這個 Activity 或 Fragment 被銷毀的時候,圖片加載也會停止。如果傳入的是 ApplicationContext,那么只有當應用程序被殺掉的時候,圖片加載才會停止

2、load()

這個方法用于指定待加載的圖片資源。Glide 支持加載各種各樣的圖片資源,包括網絡圖片、本地圖片、應用資源、二進制流、Uri 對象等等。因此 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);

3、into()

這個方法就很簡單了,我們希望讓圖片顯示在哪個 ImageView 上面,就把這個 ImageView 的實例傳進去就行了。當然,into() 方法并不僅僅只能接收 ImageView 類型的參數,還支持很多更豐富的用法

四、glide 常用的方法

方法名 功能
placeholder() 在圖片的加載過程中,我們先顯示一張臨時的圖片,等圖片加載之后再替換成要加載的圖片
diskCacheStrategy() 設置磁盤緩存的策略,一共有四個參數。 DiskCacheStrategy.NONE:什么都不緩存 DiskCacheStrategy.SOURCE 僅僅只緩存原來的全分辨率的圖像 、DiskCacheStrategy.RESULT:僅僅緩存最終的圖像 DiskCacheStrategy.ALL:緩存所有版本的圖像(默認行為)
error() 當我們因為某些異常情況導致圖片加載失敗,比如說手機網絡信號不好,這時候就會顯示出 error() 中設置的圖片,可以改善下用戶體驗
override() 其實 glide 是相當智能的,我們在絕大多數情況下都不需要知道那個圖片的大小,因為 glide 從來不會直接將圖片的完整尺寸全部加載到內存中,而是用多少加載多少,如果我們真的有指定圖片大小這種需求的話,調用 override() 方法就好了

以上便是本文的全部文章,具體的代碼我已經上傳到 Github 上了,有興趣的可以 點擊這里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容