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