图片异步加载组件 ImageLoader

    服务器返回图片的url,本地使用图片异步加载组件 ImageLoader。图片的url有如下几种:

(1)from Web  

String imageUri = "http://site.com/image.png";

(2)from SD card  

String imageUri = "file:///mnt/sdcard/image.png";

(3)from content provider  

 String imageUri = "content://media/external/audio/albumart/13";

(4)from assets  

String imageUri = "assets://image.png";

(5)from drawables (only images, non-9patch)

String imageUri = "drawable://" + R.drawable.image;

配置ImageLoaderConfiguration这个类实现全局ImageLoader的显示情况

图片格式的设置:DisplayImageOptions options

public class ImgCacheUtil {
	private static ImgCacheUtil imgCacheUtil = null;
	private static ImageLoaderConfiguration config;
	private DisplayImageOptions options;
	
	private String cacheDir = Environment.getExternalStorageDirectory()
			.getAbsolutePath() + "app/cache";
	
	
	public static ImgCacheUtil getInstance() {
		if (imgCacheUtil == null)
			imgCacheUtil = new ImgCacheUtil();
		return imgCacheUtil;
	}

	private ImgCacheUtil() {
		options = new DisplayImageOptions.Builder()
		.showImageForEmptyUri(R.drawable.icon)   //设置图片Uri为空或是错误的时候显示的图片 
		.showImageOnFail(R.drawable.icon)        //设置图片加载/解码过程中错误时候显示的图片
		.cacheInMemory()                         //设置下载的图片是否缓存在内存中  
		.cacheOnDisc()                           //设置下载的图片是否缓存在SD卡中  
		.imageScaleType(ImageScaleType.EXACTLY) //设置图片缩放方式,缩放至目标大小
		.bitmapConfig(Bitmap.Config.RGB_565)     //设置图片的解码类型
		.resetViewBeforeLoading()                  //设置图片在下载前是否重置,复位  
		.displayer(new RoundedBitmapDisplayer(20)) //设置图片显示方式,是否设置为圆角,弧度为多少
		                                           //设置图片渐显时间 FadeInBitmapDisplayer(int durationMillis)
		                                           //正常显示一张图片SimpleBitmapDisplayer()
		.build();
		
		config = new ImageLoaderConfiguration.Builder(ParentApplication.getInstance())
		.memoryCacheExtraOptions(480, 800)    //即保存的每个缓存文件的最大长宽 
         	.discCacheExtraOptions(480, 800, CompressFormat.JPEG, 0)  //设置缓存的详细信息,最好不要设置这个
		.threadPoolSize(3)                   //线程池内加载的数量  
		.discCacheFileCount(50)              //缓存的文件数量
		.discCache(new UnlimitedDiscCache(new File(cacheDir)))  //自定义缓存路径
		.discCacheFileNameGenerator(new Md5FileNameGenerator()) ///使用MD5对缓存文件进行加密命名
		.memoryCache(new UsingFreqLimitedMemoryCache(2*1024*1024))//可以通过自己的内存缓存实现
		.memoryCacheSize(2*1024*1024)
		.discCacheSize(50*1024*1024)
		.tasksProcessingOrder(QueueProcessingType.LIFO)
		.build();
	}

	public ImageLoaderConfiguration getImgLoaderConfig(){
		return config;
	}
	
	/**
	 * String imageUri = "http://site.com/image.png"; // from Web  
	 * String imageUri = "file:///mnt/sdcard/image.png"; // from SD card  
	 * String imageUri = "content://media/external/audio/albumart/13"; // from content provider  
	 * String imageUri = "assets://image.png"; // from assets  
	 * String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
	 * 加载自定义配置的图片
	 * @param url
	 * @param imageView
	 * @param options
	 */
	public void displayImage(String url, ImageView imageView){
		ImageLoader.getInstance().displayImage(url, imageView, options);
	}
	
	/**
	 * @param url
	 * @param imageView
	 * @param listener 监听图片下载情况
	 */
	public void displayImage(String url, ImageView imageView, ImageLoadingListener listener){
		ImageLoader.getInstance().displayImage(url, imageView, options, listener);	
		}

注:ImageLoaderConfiguration类在使用之前要进行初始化,否则会报错

ImageLoader.getInstance().init(ImgCacheUtil.getInstance().getImgLoaderConfig());


你可能感兴趣的:(图片异步加载组件 ImageLoader)