圖片異步加載框架 Android-Universal-Image-Loader
特點(diǎn)
多線程圖片加載盡可能多的配置選項(xiàng)(線程池,加載器,解析器,內(nèi)存/磁盤緩存,顯示參數(shù)等等)圖片可以緩存在內(nèi)存中,或者設(shè)備文件目錄下,或者SD卡中可以監(jiān)聽加載進(jìn)度可以自定義顯示每一張圖片時(shí)都帶不同參數(shù)支持Widget
jar包下載
1.自定義XXXAppllication類,初始化ImageLoader
public?class?XXXApplication?extends?Application?{ @Override public?void?onCreate()?{ super.onCreate(); ????????ImageLoaderConfiguration?config?=?new?ImageLoaderConfiguration.Builder(getApplicationContext()) ????????.denyCacheImageMultipleSizesInMemory() ????????.memoryCache(new?LruMemoryCache(2?*?1024?*?1024)) ????????.memoryCacheSize(2?*?1024?*?1024) ????????.discCacheSize(50?*?1024?*?1024) ????????.denyCacheImageMultipleSizesInMemory()?? ????????????.discCacheFileNameGenerator(new?Md5FileNameGenerator())?? ????????????.tasksProcessingOrder(QueueProcessingType.LIFO)?? ????????.discCacheFileCount(100) ????????.writeDebugLogs() ????????????.build(); ????????ImageLoader.getInstance().init(config); } }
2.在AndroidManifest.xml文件的application標(biāo)簽里加入
android:name=".XXXApplication"
3.使用imageloader
public?class?ImageManager{ ?public?static?void?Load(String?imgUrl,ImageView?imageView){ ImageLoader.getInstance().displayImage(imgUrl,?imageView); ?} ?public?static?void?Load(String?imgUrl,ImageView?imageView,DisplayImageOptions?o){ ?ImageLoader.getInstance().displayImage(imgUrl,?imageView,o); ?} }
4.部分參數(shù)介紹
?????//設(shè)置圖片在下載期間顯示的圖片 ?????showStubImage(R.drawable.ic_launcher) ? ?????//設(shè)置圖片Uri為空或是錯(cuò)誤的時(shí)候顯示的圖片 ?????showImageForEmptyUri(R.drawable.ic_empty) ? ?????//設(shè)置圖片加載/解碼過程中錯(cuò)誤時(shí)候顯示的圖片 ?????showImageOnFail(R.drawable.ic_error) ? ?????//設(shè)置圖片在下載前是否重置,復(fù)位 ?????resetViewBeforeLoading() ? ?????//設(shè)置下載的圖片是否緩存在內(nèi)存中 ?????cacheInMemory() ? ?????//設(shè)置下載的圖片是否緩存在SD卡中 ?????cacheOnDisc() ? ?????//設(shè)置圖片的解碼類型 ?????bitmapConfig(Bitmap.Config.RGB_565) ? ?????//設(shè)置圖片的解碼配置 ?????decodingOptions(android.graphics.BitmapFactory.Options?decodingOptions) ? ?????//設(shè)置圖片下載前的延遲 ?????delayBeforeLoading(int?delayInMillis) ? ?????//設(shè)置額外的內(nèi)容給ImageDownloader ?????extraForDownloader(Object?extra) ? ?????//設(shè)置圖片加入緩存前,對(duì)bitmap進(jìn)行設(shè)置 ?????preProcessor(BitmapProcessor?preProcessor) ? ?????//設(shè)置顯示前的圖片,顯示后這個(gè)圖片一直保留在緩存中 ?????postProcessor(BitmapProcessor?postProcessor) ? ?????//設(shè)置圖片以如何的編碼方式顯示 ?????imageScaleType(ImageScaleType?imageScaleType) /** ?*?設(shè)置圖片的顯示方式 ?*?@param?displayer ?*/ displayer(BitmapDisplayer?displayer) displayer: ??????????RoundedBitmapDisplayer(int?roundPixels)設(shè)置圓角圖片 ??????????FakeBitmapDisplayer()這個(gè)類什么都沒做 ??????????FadeInBitmapDisplayer(int?durationMillis)設(shè)置圖片漸顯的時(shí)間 ??SimpleBitmapDisplayer()正常顯示一張圖片 /** ?*?圖片的縮放方式 ?*?@param?imageScaleType ?*/ ????imageScaleType(ImageScaleType?imageScaleType) ????imageScaleType: ???????????????????EXACTLY?:圖像將完全按比例縮小的目標(biāo)大小 ???????????????????EXACTLY_STRETCHED:圖片會(huì)縮放到目標(biāo)大小完全 ???????????????????IN_SAMPLE_INT:圖像將被二次采樣的整數(shù)倍 ???????????????????IN_SAMPLE_POWER_OF_2:圖片將降低2倍,直到下一減少步驟,使圖像更小的目標(biāo)大小 ???????????????????NONE:圖片不會(huì)調(diào)整 /** *DisplayImageOptions簡單示例 */ //?創(chuàng)建默認(rèn)的DisplayImageOptions DisplayImageOptions?option_0=DisplayImageOptions.createSimple(); //?使用DisplayImageOptions.Builder()創(chuàng)建DisplayImageOptions DisplayImageOptions?options?=?new?DisplayImageOptions.Builder()?? .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) .showStubImage(R.drawable.loading)?? .showImageForEmptyUri(R.drawable.load_fail)?? .showImageOnFail(R.drawable.load_fail)?? .cacheInMemory(true)?? .cacheOnDisc(true)???? .build();
5.最后別忘了權(quán)限
? ?