Universal-Image-Loade是一种图片加载框架,使用它可以更高效的加载图片,下面我们就来说一下他的具体用法
首先我们先来依赖:compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
依赖完成之后我们先来初始化
1 ImageLoaderConfiguration loaderConfiguration = ImageLoaderConfiguration.createDefault(this); 2 ImageLoader.getInstance().init(loaderConfiguration);
之后我们就可以来使用他了
这是最简单的加载方法
1 ImageView imageView = (ImageView) findViewById(R.id.image_id); 2 String strUrl = "http://img06.tooopen.com/images/20161112/tooopen_sy_185726882764.jpg"; 3 //第一个参数为图片地址,第二个参数为显示的图片框 4 ImageLoader.getInstance().displayImage(strUrl,imageView);
下面这一种是带监听器的加载方法,已加载中,开始,失败
1 //带监听器的加载 2 ImageLoader.getInstance().loadImage(stUrl,new SimpleImageLoadingListener(){ 3 //加载成功 4 @Override 5 public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 6 //为加载成功的时候设置成功的图片 7 imageView.setImageBitmap(loadedImage); 8 } 9 //加载失败时调用 10 @Override 11 public void onLoadingCancelled(String imageUri, View view) { 12 //为加载失败的时候设置失败的图片 13 imageView.setImageResource(R.mipmap.img_def_error); 14 super.onLoadingCancelled(imageUri, view); 15 } 16 //正在加载时调用 17 @Override 18 public void onLoadingStarted(String imageUri, View view) { 19 //为正在加载时的时候设置正在加载时的图片 20 imageView.setImageResource(R.mipmap.pictures_no); 21 super.onLoadingStarted(imageUri, view); 22 } 23 });
如果这些方法还不能满足你,你可以在初始化的时候自定义一些东西
1 DisplayImageOptions options = new DisplayImageOptions.Builder() 2 .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片 3 .showImageForEmptyUri(R.mipmap.pictures_no) // 设置图片Uri为空或是错误的时候显示的图片 4 .showImageOnFail(R.mipmap.img_def_error) // 设置图片加载或解码过程中发生错误显示的图片 5 .resetViewBeforeLoading(false) // default 设置图片在加载前是否重置、复位 6 // .delayBeforeLoading(2000) // 下载前的延迟时间 7 .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中 8 .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中 9 .considerExifParams(false) // default 是否考虑图片参数 10 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示 11 .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型 12 // .displayer(new RoundedBitmapDisplayer(20)) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20) 13 .displayer(new FadeInBitmapDisplayer(11300)) // 图片加载好后渐入的动画时间 displayImage有效 14 .displayer(new RoundedBitmapDisplayer(180)) 15 // 设置成圆角图片 设置圆角图片时,必须为imageView设置具体的宽高。否则不显示. 16 // 且只能ImageLoader.getInstance().displayImage(url,imageView)时使用 17 .handler(new Handler()) // default 18 .build(); 19 20 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) 21 .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽 22 // .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个 23 .threadPoolSize(4) // default 线程池内加载的数量 24 // .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级 QueueProcessingType.LIFO 25 .tasksProcessingOrder(QueueProcessingType.LIFO) // QueueProcessingType.FIFO is default 26 .denyCacheImageMultipleSizesInMemory() //不缓存图片的多种尺寸在内存中 27 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 28 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 29 .memoryCacheSizePercentage(13) // default 缓存的内存大小的百分比 30 // .diskCache(new DiskCache(){})//可以自定义缓存 构建接口实现类 31 .diskCacheSize(100 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 32 // .diskCacheFileCount(100) // 可以缓存的文件数量 33 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 34 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) 35 // .connectTimeout (5 s), readTimeout (30 s) //超时时间 36 .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) //context,connectTimeout,readTimeout 37 .writeDebugLogs() // 打印debug log 38 //设置默认图片加载设置 39 .defaultDisplayImageOptions(options) 40 41 .build(); //开始构建 42 ImageLoader.getInstance().init(configuration);
附上一张加载方法的图片