Android-Universal-Image-Loader 的使用说明
這個圖片異步載入并緩存的類已經(jīng)被非常多開發(fā)人員所使用,是最經(jīng)常使用的幾個開源庫之中的一個,主流的應用,隨便反編譯幾個火的項目,都能夠見到它的身影。
? ? ? ?但是有的人并不知道怎樣去使用這庫怎樣進行配置,網(wǎng)上查到的信息對于剛接觸的人來說可能太少了,以下我就把我使用過程中所知道的寫了下來,希望能夠幫助自己和別人更深入了解這個庫的使用和配置。?
? ? ? ? GITHUB上的下載路徑為:https://github.com/nostra13/Android-Universal-Image-Loader?,下載最新的庫文件,而且導入到項目的LIB下便能夠使用。
? ? ? ??該庫以及DEMO本地下載鏈接:下載地址
一、介紹
?Android-Universal-Image-Loader是一個開源的UI組件程序,該項目的目的是提供一個可反復使用的儀器為異步圖像載入,緩存和顯示。所以。假設(shè)你的程序里須要這個功能的話,那么最好還是試試它。由于已經(jīng)封裝好了一些類和方法。
我們 能夠直接拿來用了。
而不用反復去寫了。
事實上,寫一個這方面的程序還是比較麻煩的,要考慮多線程,緩存。內(nèi)存溢出等非常多方面。但是,你也能夠參考這個樣例來自己寫出更好的程序。在此為大家介紹一下:
二、特點
多線程的圖像載入
的可能性的寬調(diào)諧對ImageLoader的配置(線程池的大小,HTTP選項,內(nèi)存和光盤快速緩存,顯示圖像。以及其它)
的圖像的可能性中的緩存存儲器和/或設(shè)備的文件器系統(tǒng)(或SD卡)
能夠“聽”載入過程中
可自己定義每一個顯示的圖像調(diào)用分隔的選項
Widget支持
Android 1.5以上支持
簡單描寫敘述一下這個項目的結(jié)構(gòu):每一個圖片的載入和顯示任務都運行在獨立的線程中,除非這個圖片緩存在內(nèi)存中。這樣的情況下圖片會馬上顯示。假設(shè)須要的圖片緩存在本地,他們會開啟一個獨立的線程隊列。
假設(shè)在緩存中沒有正確的圖片。任務線程會從線程池中獲取。因此,快速顯示緩存圖片時不會有明顯的障礙。(別人那邊借鑒的這段)
流程圖:
?
三、用法
? 這是 一個開源的Android關(guān)于下載顯示圖片的工具類。在這個下載包里面jar文件,用于我們導入項目使用,詳細用法在包里面也含有。
以下是一個樣例:
[java]?view plaincopy由于是使用過程中會圖片獲取要通過網(wǎng)絡(luò)。而且有緩存設(shè)置。所以這2個權(quán)限必須要有。
非常多人想知道怎樣設(shè)置緩存的文件夾,能夠通過以下方法:
[java]?view plaincopy//這個是你希望的緩存文件的文件夾:imageloader/Cache
之后在ImageLoaderConfiguration的配置文件里通過設(shè)置
方法來設(shè)置該應用的圖片緩存路徑。
以下我們就來開始看怎樣使用這個圖片異步載入庫把:
一.
? ? ? ? 先要配置ImageLoaderConfiguration這個類實現(xiàn)全局ImageLoader的實現(xiàn)情況。
能夠選擇在Application中初始化設(shè)置該類。
[java]?view plaincopy以上的配置看個人需求進行選擇,不是全部都要進行配置。
配置好ImageLoaderConfiguration后。調(diào)用以下方法來實現(xiàn)初始化:
[java]?view plaincopy注:ImageLoaderConfiguration 配置中的.discCacheFileNameGenerator()方法是將緩存下來的文件以什么方式命名
? ? ? ? ? 里面能夠調(diào)用的方法有 ?1.new Md5FileNameGenerator() //使用MD5對UIL進行加密命名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.new?HashCodeFileNameGenerator()//使用HASHCODE對UIL進行加密命名
二.
? ? ? ? 使用ImageLoader進行圖片載入的時候,先要實例化ImageLoader,調(diào)用以下方法進行實例化。在每一個布局里面都要實例化后再使用。
[java]?view plaincopy之后進行顯示的圖片的各種格式DisplayImageOptions?的設(shè)置:
[java]?view plaincopy依照你所須要的配置去設(shè)置,假設(shè)不須要的就能夠不做配置。
注:
? 以上配置中的:
?1).imageScaleType(ImageScaleType?imageScaleType)??是設(shè)置?圖片的縮放方式
?????縮放類型mageScaleType:
? ? ? ? ? ? ? EXACTLY?:圖像將全然按比例縮小的目標大小
? ? ? ? ? ? ? EXACTLY_STRETCHED:圖片會縮放到目標大小全然
? ? ? ? ? ? ? IN_SAMPLE_INT:圖像將被二次採樣的整數(shù)倍
? ? ? ? ? ? ? IN_SAMPLE_POWER_OF_2:圖片將降低2倍。直到下一降低步驟,使圖像更小的目標大小
? ? ? ? ? ? ? NONE:圖片不會調(diào)整
??2).displayer(BitmapDisplayer?displayer)???是設(shè)置?圖片的顯示方式
??????顯示方式displayer:
??????????????RoundedBitmapDisplayer(int?roundPixels)設(shè)置圓角圖片
??????????????FakeBitmapDisplayer()這個類什么都沒做
??????????????FadeInBitmapDisplayer(int?durationMillis)設(shè)置圖片漸顯的時間
??SimpleBitmapDisplayer()正常顯示一張圖片
之后依照需求調(diào)用
1.純粹為了載入默認配置的一個圖片的
? 方法:
? public?void?displayImage(String?uri,?ImageView?imageView)?{}
? 詳細實現(xiàn):
[java]?view plaincopy2.載入自己定義配置的一個圖片的
? 方法:
? public?void?displayImage(String?uri,?ImageView?imageView,?DisplayImageOptions?options)?{}
? 詳細實現(xiàn):
3.圖片載入時候帶載入情況的監(jiān)聽
? 方法:
?public?void?displayImage(String?uri,?ImageAware?imageAware,?DisplayImageOptions?options,ImageLoadingListener?listener)?{}
? ImageLoadingListener?用于監(jiān)聽圖片的下載情況。
? 詳細實現(xiàn):
[java]?view plaincopy4.圖片載入時候。帶監(jiān)聽又帶載入進度條的情況
? ?調(diào)用:
public void loadImage(String uri, ImageSize targetImageSize, DisplayImageOptions options,
? ? ? ? ? ? ? ? ? ? ImageLoadingListener listener, ImageLoadingProgressListener progressListener) {}
? ?詳細實現(xiàn):
四、注意事項
? 1.上述提到的2個權(quán)限必須增加,否則會出錯
? 2.ImageLoaderConfiguration必須配置而且全局化的初始化這個配置ImageLoader.getInstance().init(config); ?否則也會出現(xiàn)錯誤提示
? 3.ImageLoader是依據(jù)ImageView的height,width確定圖片的寬高。
? 4.假設(shè)經(jīng)常出現(xiàn)OOM(別人那邊看到的。認為非常有提的必要)
? ?①降低配置之中線程池的大小,(.threadPoolSize).推薦1-5;
? ?②使用.bitmapConfig(Bitmap.config.RGB_565)取代ARGB_8888;
? ?③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者 ? ? ? ?try.imageScaleType(ImageScaleType.EXACTLY);
? ?④避免使用RoundedBitmapDisplayer.他會創(chuàng)建新的ARGB_8888格式的Bitmap對象;
? ?⑤使用.memoryCache(new WeakMemoryCache())。不要使用.cacheInMemory();
以下有人問到怎樣載入本地圖片什么的。之后把那位親的回答補充上來,謝謝各位大大提出的不足(那時候用的時候僅僅想到用網(wǎng)絡(luò)圖片了,所以也沒考慮這么多)。
? ? 大致就講到這里。可能有的地方不足歡迎提出。希望大家能夠更加easy入手、使用這個庫。
==========================================================================================
歡迎增加我們的技術(shù)交流群:
Android群:?66756039
JavaEE群: ?361579846?
轉(zhuǎn)載于:https://www.cnblogs.com/yutingliuyl/p/6920742.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Android-Universal-Image-Loader 的使用说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地理探测器 GD包下载及应用(R语言,基
- 下一篇: android 开发艾特功能,Andro