ImageLoader
特征:
1、多線程下載圖片瘩欺,圖片可以來源于網(wǎng)絡必盖,文件系統(tǒng),項目文件夾assets中以及drawable中等
2俱饿、支持隨意的配置ImageLoader歌粥,例如線程池,圖片下載器拍埠,內(nèi)存緩存策略失驶,硬盤緩存策略,圖片顯示選項以及其他的一些配置
3枣购、支持圖片的內(nèi)存緩存嬉探,文件系統(tǒng)緩存或者SD卡緩存
4擦耀、根據(jù)控件(ImageView)的大小對Bitmap進行裁剪,減少Bitmap占用過多的內(nèi)存
5甲馋、較好的控制圖片的加載過程埂奈,例如暫停圖片加載,重新開始加載圖片定躏,一般使用在ListView,GridView中账磺,滑動過程中暫停加載圖片,停止滑動的時候去加載圖片
6痊远、支持圖片下載過程的監(jiān)聽
7垮抗、提供在較慢的網(wǎng)絡下對圖片進行加載
簡單使用:
1、使用ImageLoader的loadImage()方法來加載網(wǎng)絡圖片
ImageLoader.getInstance().loadImage(imageUrl, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
mImageView.setImageBitmap(loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
2碧聪、DisplayImageOptions冒版,他可以配置一些圖片顯示的選項,比如圖片在加載中ImageView顯示的圖片逞姿,是否需要使用內(nèi)存緩存辞嗡,是否需要使用文件緩存
//顯示圖片的配置
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
ImageLoader.getInstance().loadImage(imageUrl, mImageSize, options, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
mImageView.setImageBitmap(loadedImage);
}
});
3、使用displayImage()比使用loadImage()方便很多滞造,也不需要添加ImageLoadingListener接口续室,我們也不需要手動設置ImageView顯示Bitmap對象,直接將ImageView作為參數(shù)傳遞到displayImage()中就行了
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
ImageLoader.getInstance().displayImage(imageUrl, mImageView, options);
4谒养、使用displayImage()方法 他會根據(jù)控件的大小和imageScaleType來自動裁剪圖片
5挺狰、在加載網(wǎng)絡圖片的時候,經(jīng)常有需要顯示圖片下載進度的需求买窟,Universal-Image-Loader當然也提供這樣的功能丰泊,只需要在displayImage()方法中傳入ImageLoadingProgressListener接口就行了
imageLoader.displayImage(imageUrl, mImageView, options, new SimpleImageLoadingListener(), new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current,
int total) {
}
});
6、使用Universal-Image-Loader框架不僅可以加載網(wǎng)絡圖片始绍,還可以加載sd卡中的圖片瞳购,Content provider等,使用也很簡單亏推,只是將圖片的url稍加的改變下就行了苛败,下面是加載文件系統(tǒng)的圖片
ImageLoader庫就先介紹這些,如果對于其他的圖片加載庫有興趣可以看看我的其他博客