1. 程式人生 > >Glide 新增圖片的簡單使用

Glide 新增圖片的簡單使用

一. 下載

在build.gradle中新增依賴:

    compile 'com.github.bumptech.glide:glide:3.7.0'
  • 1

需要support-v4庫的支援,如果你的專案沒有support-v4庫(專案預設已經添加了),還需要新增support-v4依賴:

    compile 'com.android.support:support-v4:23.3.0'
  • 1

然後配置混淆規則:

    -keep public class * implements com.bumptech.glide.module.GlideModule
    -keep public
enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES; public *; }

其中第一個混淆規則表明不混淆所有的GlideModule。 
如果需要的話,還需新增相應的許可權:

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

二. 整合網路框架OkHttp(可選)

Glide的網路請求部分可以使用當前最流行的網路請求框架Volley或OkHttp,也可以通過Glide的ModelLoader介面自己寫網路請求。 
Glide預設使用HttpUrlConnection進行網路請求,為了讓APP保持一致的網路請求形式,可以讓Glide使用我們指定的網路請求形式請求網路資源,這裡我們選OkHttp (具有支援HTTP/2、利用連線池技術減少請求延遲、快取響應結果等等優點),需要新增一個整合庫:

    //OkHttp 2.x
    //compile 'com.github.bumptech.glide:okhttp-integration:
[email protected]
'
//compile 'com.squareup.okhttp:okhttp:2.7.5' //OkHttp 3.x compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]' compile 'com.squareup.okhttp3:okhttp:3.2.0'

注意: 
1. OkHttp 2.x和OkHttp 3.x需使用不同的整合庫。 
2. Gradle會自動將OkHttpGlideModule合併到應用的manifest檔案中。 
3. 如果你沒有對所有的GlideModule配置混淆規則(即沒有使用-keep public class * implements com.bumptech.glide.module.GlideModule),則需要把OkHttp的GlideModule進行防混淆配置:

-keep class com.bumptech.glide.integration.okhttp.OkHttpGlideModule

三. 使用

簡單使用

Glide
    .with(this)
    .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
    .into(imageView);

Glide.with()使用

  1. with(Context context). 使用Application上下文,Glide請求將不受Activity/Fragment生命週期控制。
  2. with(Activity activity).使用Activity作為上下文,Glide的請求會受到Activity生命週期控制。
  3. with(FragmentActivity activity).Glide的請求會受到FragmentActivity生命週期控制。
  4. with(android.app.Fragment fragment).Glide的請求會受到Fragment 生命週期控制。
  5. with(android.support.v4.app.Fragment fragment).Glide的請求會受到Fragment生命週期控制。

返回關聯了相應上下文的RequestManager例項。

一. 下載

在build.gradle中新增依賴:

    compile 'com.github.bumptech.glide:glide:3.7.0'
  • 1

需要support-v4庫的支援,如果你的專案沒有support-v4庫(專案預設已經添加了),還需要新增support-v4依賴:

    compile 'com.android.support:support-v4:23.3.0'
  • 1

然後配置混淆規則:

    -keep public class * implements com.bumptech.glide.module.GlideModule
    -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
      **[] $VALUES;
      public *;
    }

其中第一個混淆規則表明不混淆所有的GlideModule。 
如果需要的話,還需新增相應的許可權:

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

二. 整合網路框架OkHttp(可選)

Glide的網路請求部分可以使用當前最流行的網路請求框架Volley或OkHttp,也可以通過Glide的ModelLoader介面自己寫網路請求。 
Glide預設使用HttpUrlConnection進行網路請求,為了讓APP保持一致的網路請求形式,可以讓Glide使用我們指定的網路請求形式請求網路資源,這裡我們選OkHttp (具有支援HTTP/2、利用連線池技術減少請求延遲、快取響應結果等等優點),需要新增一個整合庫:

    //OkHttp 2.x
    //compile 'com.github.bumptech.glide:okhttp-integration:[email protected]'
    //compile 'com.squareup.okhttp:okhttp:2.7.5'

    //OkHttp 3.x
    compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'

注意: 
1. OkHttp 2.x和OkHttp 3.x需使用不同的整合庫。 
2. Gradle會自動將OkHttpGlideModule合併到應用的manifest檔案中。 
3. 如果你沒有對所有的GlideModule配置混淆規則(即沒有使用-keep public class * implements com.bumptech.glide.module.GlideModule),則需要把OkHttp的GlideModule進行防混淆配置:

-keep class com.bumptech.glide.integration.okhttp.OkHttpGlideModule

三. 使用

簡單使用

Glide
    .with(this)
    .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
    .into(imageView);

Glide.with()使用

  1. with(Context context). 使用Application上下文,Glide請求將不受Activity/Fragment生命週期控制。
  2. with(Activity activity).使用Activity作為上下文,Glide的請求會受到Activity生命週期控制。
  3. with(FragmentActivity activity).Glide的請求會受到FragmentActivity生命週期控制。
  4. with(android.app.Fragment fragment).Glide的請求會受到Fragment 生命週期控制。
  5. with(android.support.v4.app.Fragment fragment).Glide的請求會受到Fragment生命週期控制。

返回關聯了相應上下文的RequestManager例項。