android圖片緩衝架構Android-Universal-Image-Loader

來源:互聯網
上載者:User

標籤:

http://blog.csdn.net/king_is_everyone/article/details/34107081

最近跟同學們做了一個創業項目,其實跟以前做項目不同,以前大多數都是做web網站,對記憶體管理這些不太關注,因為是pc機,做android的話也就是一些小列子,現在到了做產品階段吧,只能把項目做到最優。不扯了,先來說這個架構是做什麼的,Android-Universal-Image-Loader主要是一個圖片的緩衝架構,根據官方解釋就是,它提供了一個非同步處理圖片的方案。它提供兩種擷取圖片方式async or sync,並且提供了一個可定製化的組件(thread executors, downloader, decoder, memory and disk cache, display image options, etc),它會把圖片首先緩衝到本地,然後在從本地進行讀取這些圖片,

這是官方使用的

    先來說說怎麼使用它:首先在github上面下載Android-Universal-Image-Loader,加入到你的android項目裡面,然後記得一定要加上這兩個許可權,否則這個緩衝架構是不能夠使用的

[html] view plaincopyprint? 
  1. <manifest>  
  2.     <uses-permission android:name="android.permission.INTERNET" />  
  3.     <!-- Include next permission if you want to allow UIL to cache images on SD card -->  
  4.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  5.     ...  
  6.     <application android:name="MyApplication">  
  7.         ...  
  8.     </application>  
  9. </manifest>  

然後在代碼裡對該緩衝架構進行配置,之所以說它是一個很靈活的東西,是因為它裡面的大多數參數都可以手動設定,組件通用化程度高,幾乎不需要進行複寫。

 

這是我大概根據官方文檔翻譯的一些配置,其實對於大家來說,用預設的即可,除非是有特殊要求。

 





先開始使用的第一步:

配置ImageLoaderConfiguration這個類實現全域ImageLoader

 

[java] view plaincopyprint? 
  1. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(  
  2.                 activity)  
  3.                 .memoryCacheExtraOptions(640, 480)  
  4.                 // 儲存每個緩衝圖片的最大長和寬  
  5.                 .threadPoolSize(3)  
  6.                 // 線程池的大小 這個其實預設就是3  
  7.                 .memoryCacheSize(2 * 1024)  
  8.                 // 設定緩衝的最大位元組  
  9.                 .denyCacheImageMultipleSizesInMemory()  
  10.                 // 緩衝顯示不同大小的同一張圖片  
  11.                 .imageDownloader(  
  12.                         new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout  
  13.                 // s)逾時時間  
  14.                 .build();  
  15.         ImageLoader imageLoader = ImageLoader.getInstance();  
  16.         imageLoader.init(config);  


這是我大概需要的一些參數配置。

 

第二步

配置一些圖片選項

 

[java] view plaincopyprint? 
  1. DisplayImageOptions options;  
  2.         options = new DisplayImageOptions.Builder()  
  3.                 .showImageOnLoading(R.drawable.ic_launcher) // 設定圖片在下載期間顯示的圖片  
  4.                 .showImageForEmptyUri(R.drawable.ic_launcher)// 設定圖片Uri為空白或是錯誤的時候顯示的圖片  
  5.                 .showImageOnFail(R.drawable.ic_launcher) // 設定圖片載入/解碼過程中錯誤時候顯示的圖片  
  6.                 .cacheInMemory(true)// 設定下載的圖片是否緩衝在記憶體中  
  7.                 .cacheOnDisk(true)// 設定下載的圖片是否緩衝在SD卡中  
  8.                 .displayer(new FadeInBitmapDisplayer(100))// 是否圖片載入好後漸入的動畫時間  
  9.                 .build();  


這是大概的一個配置狀況,在下一篇會用一個listView的執行個體來講解這個架構的具體使用

android圖片緩衝架構Android-Universal-Image-Loader

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.