Android学习笔记-Universal-Image-Loade图片加载框架

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);

附上一张加载方法的图片


原文地址:https://www.cnblogs.com/langfei8818/p/6067338.html