Universal-Image-Loader圖片非同步載入類庫
這是 一個開源的Android關於下載顯示圖片的工具類,在這個下載包裡面jar檔案,用於我們匯入專案使用,具體使用方法在包裡面也含有。下面是一個例子:
雙擊程式碼複製 |
|
1 2 |
<uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
由於是使用過程中會圖片獲取要通過網路,並且有快取設定,所以這2個許可權必須要有。
很多人想知道如何設定快取的目錄,可以通過以下方法:
雙擊程式碼複製 |
|
1 |
File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache"); |
//這個是你希望的快取檔案的目錄:imageloader/Cache
之後在ImageLoaderConfiguration的配置檔案中通過設定
雙擊程式碼複製 |
|
1 |
.discCache(newUnlimitedDiscCache(cacheDir))//自定義快取路徑 |
方法來設定該應用的圖片快取路徑。
下面我們就來開始看如何使用這個圖片非同步載入庫把:
一.
先要配置ImageLoaderConfiguration
可以選擇在Application中初始化設定該類。
雙擊程式碼複製 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ImageLoaderConfiguration config = newImageLoaderConfiguration .Builder(context) .memoryCacheExtraOptions(480, 800) // max width, max height,即儲存的每個快取檔案的最大長寬 .discCacheExtraOptions(480, 800, CompressFormat.JPEG, .threadPoolSize(3)//執行緒池內載入的數量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(newUsingFreqLimitedMemoryCache(2* 1024* 1024)) // You can pass your own memory cache implementation/你可以通過自己的記憶體快取實現 .memoryCacheSize(2* 1024* 1024) .discCacheSize(50* 1024* 1024) .discCacheFileNameGenerator(newMd5FileNameGenerator())//將儲存的時候的URI名稱用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) //快取的檔案數量 .discCache(newUnlimitedDiscCache(cacheDir))//自定義快取路徑 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) .imageDownloader(newBaseImageDownloader(context, 5* 1000, 30* 1000)) // connectTimeout (5 s), readTimeout (30 s)超時時間 .writeDebugLogs() // Remove for release app .build();//開始構建 // Initialize ImageLoader with configuration. |
以上的配置看個人需求進行選擇,不是所有都要進行配置。
配置好ImageLoaderConfiguration後,呼叫以下方法來實現初始化:
雙擊程式碼複製 |
|
1 |
ImageLoader.getInstance().init(config);//全域性初始化此配置 |
注:ImageLoaderConfiguration 配置中的.discCacheFileNameGenerator()方法是將快取下來的檔案以什麼方式命名
裡面可以呼叫的方法有 1.new Md5FileNameGenerator() //使用MD5對UIL進行加密命名
2.new HashCodeFileNameGenerator()//使用HASHCODE對UIL進行加密命名
二.
使用ImageLoader進行圖片載入的時候,先要例項化ImageLoader,呼叫以下方法進行例項化,在每個佈局裡面都要例項化後再使用。
雙擊程式碼複製 |
|
1 |
protectedImageLoader imageLoader = ImageLoader.getInstance(); |
之後進行顯示的圖片的各種格式DisplayImageOptions 的設定:
雙擊程式碼複製 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
DisplayImageOptions options; options = newDisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_launcher) //設定圖片在下載期間顯示的圖片 .showImageForEmptyUri(R.drawable.ic_launcher)//設定圖片Uri為空或是錯誤的時候顯示的圖片 .showImageOnFail(R.drawable.ic_launcher) //設定圖片載入/解碼過程中錯誤時候顯示的圖片 .cacheInMemory(true)//設定下載的圖片是否快取在記憶體中 .cacheOnDisc(true)//設定下載的圖片是否快取在SD卡中 .considerExifParams(true) //是否考慮JPEG影象EXIF引數(旋轉,翻轉) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//設定圖片以如何的編碼方式顯示 .bitmapConfig(Bitmap.Config.RGB_565)//設定圖片的解碼型別// .decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//設定圖片的解碼配置 //.delayBeforeLoading(int delayInMillis)//int delayInMillis為你設定的下載前的延遲時間 //設定圖片加入快取前,對bitmap進行設定 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//設定圖片在下載前是否重置,復位 .displayer(newRoundedBitmapDisplayer(20))//是否設定為圓角,弧度為多少 .displayer(newFadeInBitmapDisplayer(100))//是否圖片載入好後漸入的動畫時間 .build();//構建完成 |
按照你所需要的配置去設定,如果不需要的就可以不做配置。
注:
以上配置中的:
1).imageScaleType(ImageScaleType imageScaleType) 是設定圖片的縮放方式縮放型別mageScaleType:
EXACTLY :影象將完全按比例縮小的目標大小
EXACTLY_STRETCHED:圖片會縮放到目標大小完全
IN_SAMPLE_INT:影象將被二次取樣的整數倍
IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使影象更小的目標大小
NONE:圖片不會調整2).displayer(BitmapDisplayer displayer) 是設定圖片的顯示方式
顯示方式displayer:
RoundedBitmapDisplayer(int roundPixels)設定圓角圖片
FakeBitmapDisplayer()這個類什麼都沒做
FadeInBitmapDisplayer(int durationMillis)設定圖片漸顯的時間
SimpleBitmapDisplayer()正常顯示一張圖片
之後按照需求呼叫
1.純粹為了載入預設配置的一個圖片的
方法:
public void displayImage(String uri, ImageView imageView) {}
具體實現:
雙擊程式碼複製 |
|
1 |
ImageLoader.getInstance().displayImage(imageUrl, imageView); // imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控制元件 |
2.載入自定義配置的一個圖片的
方法:
public void displayImage(String uri, ImageView imageView, DisplayImageOptions options) {}
具體實現:
雙擊程式碼複製 |
|
1 |
ImageLoader.getInstance().displayImage(imageUrl, imageView,options); // imageUrl代表圖片的URL地址,imageView代表承載圖片的IMAGEVIEW控制元件 , options代表DisplayImageOptions配置檔案 |
3.圖片載入時候帶載入情況的監聽
方法:
public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options,ImageLoadingListener listener) {}
ImageLoadingListener 用於監聽圖片的下載情況。
具體實現:
雙擊程式碼複製 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
imageLoader.displayImage(imageUrl, imageView, options, newImageLoadingListener() { @Override publicvoidonLoadingStarted() { //開始載入的時候執行 } @Override publicvoidonLoadingFailed(FailReason failReason) { //載入失敗的時候執行 } @Override publicvoidonLoadingComplete(Bitmap loadedImage) { //載入成功的時候執行 } @Override publicvoidonLoadingCancelled() { //載入取消的時候執行 }}); |
4.圖片載入時候,帶監聽又帶載入進度條的情況呼叫:public void loadImage(String uri, ImageSize targetImageSize, DisplayImageOptions options,ImageLoadingListener listener, ImageLoadingProgressListener progressListener) {}具體實現:
雙擊程式碼複製 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
imageLoader.displayImage(imageUrl, imageView, options, newImageLoadingListener() { @Override publicvoidonLoadingStarted() { //開始載入的時候執行 } @Override publicvoidonLoadingFailed(FailReason failReason) { //載入失敗的時候執行 } @Override publicvoidonLoadingComplete(Bitmap loadedImage) { //載入成功的時候執行 } @Override publicvoidonLoadingCancelled() { //載入取消的時候執行 },newImageLoadingProgressListener() { @Override publicvoidonProgressUpdate(String imageUri, View view, intcurrent,inttotal) { //在這裡更新 ProgressBar的進度資訊 } }); |
四、注意事項1.上述提到的2個許可權必須加入,否則會出錯2.ImageLoaderConfiguration必須配置並且全域性化的初始化這個配置ImageLoader.getInstance().init(config); 否則也會出現錯誤提示3.ImageLoader是根據ImageView的height,width確定圖片的寬高。4.如果經常出現OOM(別人那邊看到的,覺得很有提的必要)①減少配置之中執行緒池的大小,(.threadPoolSize).推薦1-5;②使用.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者 try.imageScaleType(ImageScaleType.EXACTLY);④避免使用RoundedBitmapDisplayer.他會建立新的ARGB_8888格式的Bitmap物件;⑤使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();
相關推薦
Universal-Image-Loader圖片非同步載入類庫
這是 一個開源的Android關於下載顯示圖片的工具類,在這個下載包裡面jar檔案,用於我們匯入專案使用,具體使用方法在包裡面也含有。下面是一個例子: 雙擊程式碼複製 1 2 <uses-permissionandroid:name="android.pe
Android-Universal-Image-Loader 圖片非同步載入類庫的使用(超詳細配置)
這個圖片非同步載入並快取的類已經被很多開發者所使用,是最常用的幾個開源庫之一,主流的應用,隨便反編譯幾個火的專案,都可以見到它的身影。 可是有的人並不知道如何去使用這庫如何進行配置,網上查到的資訊對於剛接觸的人來說可能太少了,下面我就把我使用過程中
Android-Image-Loader 圖片非同步載入類庫的使用超(詳細配置)
這個圖片非同步載入並快取的類已經被很多開發者所使用,是最常用的幾個開源庫之一,主流的應用,隨便反編譯幾個火的專案,都可以見到它的身影。 可是有的人並不知道如何去使用這庫如何進行配置,網上查到的資訊對於剛接觸的人來說可能太少了,下面我就把我使用
Android載入圖片 Universal-Image-Loader圖片快取問題
開發中大部分情況下我們需要快取圖片,用imageLoader兩步實現載入網路圖片後,快取到記憶體以及sd卡.再次讀取該圖片時先從記憶體找,有則直接載入,沒有則從sd卡找,再沒有則讀網路,這樣實現了三級快取. 1.初始化配置,ImageLoader是單例模式,
android--------Universal-Image-Loader圖片載入框架和結合LruCache快取圖片
本部落格包含包含Android-Universal-Image-Loader 網路圖片載入框架實現圖片載入和結合universal-image-loader與LruCache來自定義快取圖片,可以設定快取與不快取。 Android-Universal-Image-Load
使用 Android-Universal-Image-Loader 圖片載入框架,載入圖片
特點 多執行緒下載圖片,圖片可以來源於網路,檔案系統,專案資料夾assets中以及drawable中等 支援隨意的配置ImageLoader,例如執行緒池,圖片下載器,記憶體快取策略,硬碟快取策略,圖片顯示選項以及其他的一些配置 支援圖片
Android中使用Universal-Image-Loader圖片快取
ImageLoader 是最早開源的 Android 圖片快取庫, 強大的快取機制, 早期被廣泛 Android 應用使用, 至今仍然有很多 Android 開發者在使用。 GitHub地址:
Glide(圖片非同步載入快取庫)的方法介紹
文章來源:http://blog.csdn.net/u011733020/article/details/52319283 Glide 在開源中國上的介紹 Glide 的詳細介紹:請點這裡Glide 的下載地址:請點這裡 Glide :
Android 使用圖片異步載入框架Universal Image Loader的問題
loader mar fill splay con iss text blog option 使用的Jar包 問題: optionsm = new DisplayImageOptions.Builder() .displayer(new
Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android開源元件載入網路圖片的優缺點比較
關於 Fresco Facebook最近推出了一款用於Android應用中展示圖片的強大圖片庫Fresco,它能夠從網路、本地儲存和本地資源中載入圖片。而且,為了節省資料和CPU,它擁有三級快取。 Fresco 是一個強大的圖片載入元件。 Fresco 中設計有一個叫做 image pipeline
universal-image-loader載入圖片,程式異常崩潰,圖片不在載入顯示問題
主要是發現universal-image-loader 用來在載入圖片的時候,如果程式異常崩潰了,那麼在自動重啟程式的時候,universal-image-loader會出現在快取讀取圖片的問題,解決方式為 new DisplayImageOptions.Builde
Android Universal-Image-Loader,Volley,Picasso、Fresco和Glide五大Android開源元件載入網路圖片的優缺點比較
關於 Fresco Facebook最近推出了一款用於Android應用中展示圖片的強大圖片庫Fresco,它能夠從網路、本地儲存和本地資源中載入圖片。而且,為了節省資料和CPU,它擁有三級快取。 Fresco 是一個強大的圖片載入元件。 Fresco 中設計有一個叫做 image pipeline
Android-Universal-Image-Loader 學習筆記(二)載入圖片原理
public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageLoadingListener listener, ImageLoadingProgressListener pro
Universal-Image-Loader的圖片載入流程原始碼分析
概述 Universal-Image-Loader是經典的圖片載入框架,雖然現在該專案不再維護,但對於初學者依舊是值得學習的開源專案之一,本文就該框架的載入圖片流程做簡要梳理,希望讀者有所收穫。 該文參考了【codeKK】 Android Universal
開源圖片載入庫universal-image-loader使用
ImageLoader | | - init(ImageLoaderConfiguration) | - isInited() | - displayImage(...) | - loadImage(...)
Android 開源框架Universal-Image-Loader完全解析(二)--- 圖片快取策略詳解
本篇文章繼續為大家介紹Universal-Image-Loader這個開源的圖片載入框架,介紹的是圖片快取策略方面的,如果大家對這個開源框架的使用還不瞭解,大家可以看看我之前寫的一篇文章Android 開源框架Universal-Image-Loader完全解析(一)---
Unity+NGUI打造網路圖片非同步載入與本地快取工具類(一)
我們在移動端的開發中,非同步網路圖片載入用的非常的多,在unity當中雖然有AssetBundle的存在,一般是先載入好遊戲資源然後再進入場景,但是還有不少地方能夠用到非同步網路圖片的載入以及其快取機制。 我之前也寫過兩個版本的ios中的非同步網路圖片載入helper類,所
Android-Universal-Image-Loader的工具類封裝
在Android開發中對圖片資源的處理已經司空見慣了,如果還是使用Android API提供的方法來處理圖片(尤其是網路圖片),不僅複雜工作量大,而且還達不到好的一個效果.所以最終選擇一些圖片處理框架,如Android-Universal-Image-Loader,pica
Universal-Image-Loader(android圖片快取)
詳細資料整理請加群284568173自行下載pdf 專案介紹: Android上最讓人頭疼的莫過於從網路獲取圖片、顯示、回收,任何一個環節有問題都可能直接OOM,這個專案或許能幫到你。Universal Image Loader for Android的目的是為了實現
Universal Image Loader庫使用方法
UIL aims to provide a powerful, flexible and highly customizable instrument for image loading, caching and displaying. It provides a lot