Glide的封裝和使用總結

在泰國舉行的谷歌開發者論壇上,谷歌爲我們介紹了一個名叫 Glide 的圖片加載庫,作者是bumptech。這個庫被廣泛的運用在google的開源項目中,包括2014年google I/O大會上發佈的官方app。連美國的YELP(美國最大點評網站)也開始在自己的項目中引入Glide.根據公司的要求,本人也開始封裝GLide.期間遇到不少令人蛋疼的問題.現在在這裏總結自己的經驗,希望能幫助到後面的使用者.原理什麼的就不講了,這個不是一言兩語能說清楚的,而且原理與picasso類似,不過增加了很多細節上的優化,網上很多相關的介紹,這裏只講單純的使用

首先,添加依賴:

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.github.bumptech.glide:okhttp-integration:1.0.+'後面這一句在很多博客上說要添加但實際上,如果你項目中引入了OKHTTP那麼後面一句是可以省略的.

第二步,定義一個類實現 GlideModule,在這個類裏你可以定義圖片的編碼格式,以及自定義的緩存位置.在這個類中,針對內存大小不同的手機,分別定義了兩種編碼格式,針對低內存的手機,我們設置他的編碼格式爲
PREFER_RGB_565,針對高內存的手機,我們可以設置編碼格式爲PREFER_ARGB_8888來提高圖片的質量,此外還需要在這裏設置圖片通過Glidebuilder.setDiskCache()方法來設置圖片的硬盤緩存路徑,這裏傳入的參數是一個
DiskLruCacheFactory的對象,你可以通過繼承這個類來自定義,圖片的硬盤緩存路徑,設置8888一般要用來防止加載大圖時候,由於圖片質量轉換造成的色差問題,

第三步.在清單文件中註冊第二步中的GlideModule類
<meta-data
    android:name="yourGlideModulePath"
    android:value="GlideModule" />
第四步.在你程序的Application的onCreate方法中,或者直接在第二步的繼承自GlideModule的類爲ViewTarget設置TagId
ViewTarget.setTagId(R.id.glide_tag);同時在values文件夾下新建ids.xml,添加<item name="image_tag" type="id"/>
在很多博客中,很多大牛說要爲Glide設置網絡模塊,但這一步在早期的Glide版本中需要,在當前版本(3.7.0)中就沒有必要了GLide會自動關聯你項目中使用的常見網絡模塊如OkHTTP,VOlley等.

第五步.在自己的圖片控件中使用this.setTag(key, url),
Glide.with(context)

       .load(url)//目標URL
        .placeholder(defaultImageResId) //佔位圖片
        .error(defaultImageResId) //圖片獲取失敗時默認顯示的圖片
        .diskCacheStrategy(DiskCacheStrategy.ALL) //緩存全尺寸圖片,也緩存其他尺寸圖片
        .centerCrop()
        .crossFade()
        .into(this);
ok,差不多能用了,細節方面根據自己的需求優化一下就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章