Android中Glide加載圖片并實現(xiàn)圖片緩存
今天工作中遇到Glide的緩存問題,之前在項目中一直用Glide加載本地及網(wǎng)絡(luò)圖片,但是沒有考慮過緩存的問題,但是需求中需要提到了,所以在網(wǎng)上查了一下,再這里和大家簡單的分享一下Glide的使用方法以及緩存
首先,Glide是Github上開源的一個圖片庫,作者是bumptech,所以要使用的話,必須添加依賴:
compile 'com.github.bumptech.glide:glide:3.6.1'
加載方式:
Glide.with(context) .load("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png") .into(image);
加載方式很簡單,load加載url,into綁定控件。context,支持Activity,fragment,并與活動的生命周期保持一致,在onPause()暫停加載,onResume()恢復(fù)加載
其次,并不僅僅如此:
Glide.with(this).load("url").crossFade().placeholder(R.drawable.ic_user).error(R.drawable.ic_user).into(ivUser);
Glide還可以通過crossFade()來設(shè)置加載動畫,placeholder()默認(rèn)加載圖片,error()加載出錯圖片等等,另外還支持圖片邊界縮放,例如centerCrop,fitCenter
Glide.with(this).load("url").centerCrop().error(R.drawable.ic_user).into(ivUser);
最后,Glide支持圖片緩存
Glide.with(this).load(“url”).diskCacheStrategy(DiskCacheStrategy.ALL).crossFade().centerCrop().error(R.drawable.ic_user).into(ivUser);
添加diskCacheStrategy(DiskCacheStrategy.ALL)就支持硬盤緩存了,因為Glide硬盤緩存會為不同寬高的同一張圖片進行二次緩存,所以需要設(shè)置DiskCacheStrategy.ALL,它會在下次加載的時候?qū)⑷叽绲膱D片取出,根據(jù)設(shè)置的大小,在緩存。
如果你不想從緩存中讀取的話,Glide還提供了skipMemoryCache(boolean)方法,是否跳過緩存,哈哈,是不是很全呢?
以上是Glide的一些簡單使用方法,僅供參考。
當(dāng)然Glide還可以設(shè)置大小,路徑,格式等
1 創(chuàng)建GlideModule
package com.mypackage; public class MyGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // Apply options to the builder here. } @Override public void registerComponents(Context context, Glide glide) { // register ModelLoaders here. } }
2 在清單文件中添加meta-data tag標(biāo)簽
<manifest ...> <!-- ... permissions --> <application ...> <meta-data android:name="com.mypackage.MyGlideModule" android:value="GlideModule" /> <!-- ... activities and other components --> </application> </manifest>
3 混淆
-keepnames class com.mypackage.MyGlideModule # or more generally: #-keep public class * implements com.bumptech.glide.module.GlideModule
4 設(shè)置硬盤緩存大小
builder.setDiskCache( new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
5 設(shè)置緩存位置
你可以使用內(nèi)置的internalcachediskcachefactory放置你的緩存在應(yīng)用程序內(nèi)部緩存目錄:
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, cacheDirectoryName, yourSizeInBytes));
您還可以使用內(nèi)置的externalcachediskcachefactory放置你的緩存在應(yīng)用程序中的公共緩存目錄的SD卡:
builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, cacheDirectoryName, yourSizeInBytes));
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實現(xiàn)帶有單選按鈕和復(fù)選按鈕的dialog功能示例
這篇文章主要介紹了Android編程實現(xiàn)帶有單選按鈕和復(fù)選按鈕的dialog功能,結(jié)合具體實例形式分析了Android實現(xiàn)帶有單選按鈕的dialog對話框及帶有復(fù)選按鈕的dialog對話框相關(guān)操作技巧,需要的朋友可以參考下2017-09-09android 自定義view實現(xiàn)彩虹進度條功能
實現(xiàn)一個彩虹色進度條功能,不說明具體用途大家應(yīng)該能猜到,想找別人造的輪子,但是沒有合適的,所以決定自己實現(xiàn)一個,下面小編通過實例代碼給大家分享android 自定義view實現(xiàn)彩虹進度條功能,感興趣的朋友一起看看吧2024-06-06Android 處理OnItemClickListener時關(guān)于焦點顏色的設(shè)置問題
這篇文章主要介紹了Android 處理OnItemClickListener時關(guān)于焦點顏色的設(shè)置問題的相關(guān)資料,需要的朋友可以參考下2017-02-02android引導(dǎo)用戶開啟自啟動權(quán)限的方法
今天小編就為大家分享一篇android引導(dǎo)用戶開啟自啟動權(quán)限的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07android實現(xiàn)自動關(guān)機的具體方法
android實現(xiàn)自動關(guān)機的具體方法,需要的朋友可以參考一下2013-06-06Android M(6.x)使用OkHttp包解析和發(fā)送JSON請求的教程
Android 6.0采用的SPDY支持HTTP上GZIP壓縮的傳輸,這使得OkHttp包的功能能夠進一步被利用,本文我們來總結(jié)一下Android M(6.0)使用OkHttp包解析和發(fā)送JSON請求的教程2016-07-07