標籤:
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?
- <manifest>
- <uses-permission android:name="android.permission.INTERNET" />
- <!-- Include next permission if you want to allow UIL to cache images on SD card -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- ...
- <application android:name="MyApplication">
- ...
- </application>
- </manifest>
然後在代碼裡對該緩衝架構進行配置,之所以說它是一個很靈活的東西,是因為它裡面的大多數參數都可以手動設定,組件通用化程度高,幾乎不需要進行複寫。
這是我大概根據官方文檔翻譯的一些配置,其實對於大家來說,用預設的即可,除非是有特殊要求。
先開始使用的第一步:
配置ImageLoaderConfiguration這個類實現全域ImageLoader
[java] view plaincopyprint?
- ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
- activity)
- .memoryCacheExtraOptions(640, 480)
- // 儲存每個緩衝圖片的最大長和寬
- .threadPoolSize(3)
- // 線程池的大小 這個其實預設就是3
- .memoryCacheSize(2 * 1024)
- // 設定緩衝的最大位元組
- .denyCacheImageMultipleSizesInMemory()
- // 緩衝顯示不同大小的同一張圖片
- .imageDownloader(
- new BaseImageDownloader(activity, 5 * 1000, 30 * 1000)) // connectTimeout
- // s)逾時時間
- .build();
- ImageLoader imageLoader = ImageLoader.getInstance();
- imageLoader.init(config);
這是我大概需要的一些參數配置。
第二步
配置一些圖片選項
[java] view plaincopyprint?
- DisplayImageOptions options;
- options = new DisplayImageOptions.Builder()
- .showImageOnLoading(R.drawable.ic_launcher) // 設定圖片在下載期間顯示的圖片
- .showImageForEmptyUri(R.drawable.ic_launcher)// 設定圖片Uri為空白或是錯誤的時候顯示的圖片
- .showImageOnFail(R.drawable.ic_launcher) // 設定圖片載入/解碼過程中錯誤時候顯示的圖片
- .cacheInMemory(true)// 設定下載的圖片是否緩衝在記憶體中
- .cacheOnDisk(true)// 設定下載的圖片是否緩衝在SD卡中
- .displayer(new FadeInBitmapDisplayer(100))// 是否圖片載入好後漸入的動畫時間
- .build();
這是大概的一個配置狀況,在下一篇會用一個listView的執行個體來講解這個架構的具體使用
android圖片緩衝架構Android-Universal-Image-Loader