博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Universal-Image-Loader的使用
阅读量:6233 次
发布时间:2019-06-21

本文共 4696 字,大约阅读时间需要 15 分钟。

hot3.png

下载地址

Android 1.5以上支持

每一个图片的加载和显示任务都运行在独立的线程中,除非这个图片缓存在内存中,这种情况下图片会立即显示。如果需要的图片缓存在本地,他们会开启一个独立的线程队列。如果在缓存中没有正确的图片,任务线程会从线程池中获取,因此,快速显示缓存图片时不会有明显的障碍。

                                              091921_x53C_1417500.png

需要的权限

<uses-permission android:name="android.permission.INTERNET" />  

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

获取缓存路径

File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache");  //这个是你希望的缓存文件的目录:imageloader/Cache

File cacheDir = StorageUtils.getCacheDirectory(context);  

ImageLoaderConfiguration的配置

 

1.   File cacheDir = StorageUtils.getCacheDirectory(context);  

2.   ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)  

3.           .memoryCacheExtraOptions(480800// default = device screen dimensions  即保存的每个缓存文件的最大长宽  

4.           .diskCacheExtraOptions(480800, CompressFormat.JPEG, 75null)  //设置缓存的详细信息,最好不要设置这个 

5.           .taskExecutor(...)  

6.           .taskExecutorForCachedImages(...)  

7.           .threadPoolSize(3// default 线程池设置1~5 避免OOM  

8.           .threadPriority(Thread.NORM_PRIORITY - 1// default  

9.           .tasksProcessingOrder(QueueProcessingType.FIFO) // default  

10.          .denyCacheImageMultipleSizesInMemory()  

11.          .memoryCache(new LruMemoryCache(2 * 1024 * 1024))  

12.          .memoryCacheSize(2 * 1024 * 1024)  

13.          .memoryCacheSizePercentage(13// default  

14.          .diskCache(new UnlimitedDiscCache(cacheDir)) // default  磁盘缓存路径

15.          .diskCacheSize(50 * 1024 * 1024)  

16.          .diskCacheFileCount(100)  //缓存的文件数量  

17.          .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // defaultMd5FileNameGenerator() Md5加密

18.          .imageDownloader(new BaseImageDownloader(context)) // default  下载超时

19.          .imageDecoder(new BaseImageDecoder()) // default  

20.          .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default  

21.          .writeDebugLogs()  

22.          .build();  

ImageLoader实例化

1.   protected ImageLoader imageLoader = ImageLoader.getInstance();  

DisplayImageOptions 设置

1.   DisplayImageOptions options;  

2.   options = new DisplayImageOptions.Builder()  

3.    .showImageOnLoading(R.drawable.ic_launcher) //设置图片在下载期间显示的图片  

4.    .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片  

5.   .showImageOnFail(R.drawable.ic_launcher)  //设置图片加载/解码过程中错误时候显示的图片

6.   .cacheInMemory(true)//设置下载的图片是否缓存在内存中  

7.   .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中  

8.   .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)

9.   .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示  

10.  .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//  

11.  .decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//设置图片的解码配置  

12.  //.delayBeforeLoading(int delayInMillis)//int delayInMillis为你设置的下载前的延迟时间

13.  //设置图片加入缓存前,对bitmap进行设置  

14.  //.preProcessor(BitmapProcessor preProcessor)  

15.  .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位  

16.  .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少  

17.  .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间  

18.  .build();//构建完成  

imageScaleType(ImageScaleType imageScaleType)  是设置 图片的缩放方式

     缩放类型mageScaleType:
              EXACTLY :图像将完全按比例缩小的目标大小
              EXACTLY_STRETCHED:图片会缩放到目标大小完全
              IN_SAMPLE_INT:图像将被二次采样的整数倍
              IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
              NONE:图片不会调整
  2
.displayer(BitmapDisplayer displayer)   是设置 图片的显示方式
      显示方式displayer
              RoundedBitmapDisplayerint roundPixels)设置圆角图片
              FakeBitmapDisplayer()这个类什么都没做
              FadeInBitmapDisplayerint durationMillis)设置图片渐显的时间
         SimpleBitmapDisplayer()正常显示一张图片 

 

ImageLoader初始化(必须要的步骤,不如出错)

ImageLoader.getInstance().init(config);

 

用法

1 ImageLoader.getInstance().displayImage(imageUrl, imageView);

加载自定义配置的一个图片的

ImageLoader.getInstance().displayImage(imageUrl, imageViewoptions); // imageUrl代表图片的URL地址,imageView代表承载图片的IMAGEVIEW控件  options代表DisplayImageOptions配置文件 

3图片加载时候带加载情况的监听

4图片加载时候,带监听又带加载进度条的情况

加载其他来源的图片

使用类Scheme

 

String assetsUrl = Scheme.ASSETS.wrap("image.png"); String drawableUrl = Scheme.DRAWABLE.wrap("R.drawable.image");  String file= Scheme.FILE.warp("mnt/sdcard/image.png");String contentprividerUrl = "content://media/external/audio/albumart/13";

GirdView,ListView加载图片

供了PauseOnScrollListener这个类来控制ListView,GridView滑动过程中停止去加载图片,该类使用的是代理模式

1.   listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));  

2.   gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));  

第一个参数就是我们的图片加载对象ImageLoader, 第二个是控制是否在滑动过程中暂停加载图片,如果需要暂停传true就行了,第三个参数控制猛的滑动界面的时候图片是否加载

 

OutOfMemoryError

  • 减少线程池中线程的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推荐配置1-5

  • DisplayImageOptions选项中配置bitmapConfigBitmap.Config.RGB_565,因为默认是ARGB_8888 使用RGB_565会比使用ARGB_8888少消耗2倍的内存

  • ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new      WeakMemoryCache()) 或者不使用内存缓存

  • DisplayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)

转载于:https://my.oschina.net/qiuhoude/blog/416047

你可能感兴趣的文章
java测试邮箱是否_javaWEB邮件测试
查看>>
java里booelan_Java Web应用开发技术与案例教程 教学课件 张继军 第4章_JDBC数据库访问技术.ppt...
查看>>
php mysql记录用户行为_用户参与记录存储的演变_PHP教程
查看>>
python中使用缩进来体现代码之间的逻辑关系_Python使用缩进来体现代码之间的逻辑关系。...
查看>>
python图像对比度拉伸_python库skimage 图像直方图均衡化、自适应均衡化、对比度拉伸实现...
查看>>
java判断是不是disable_Java Compiler disable()方法与示例
查看>>
php 发送 二进制,PHP处理二进制数据的实现方法
查看>>
用php写上传文件的代码,php多文件上传实现代码
查看>>
php发送邮件怎么配置,php 配置smtp发送邮件
查看>>
java文件名要和什么一致,Java源程序的文件名一定要与文件中某个类的名称一致。...
查看>>
c php结合,腾讯熊月:企点将php嵌入到高性能C/C++框架运行的探索实践
查看>>
php图片克隆,php实现对象克隆的方法
查看>>
java myqq ui,用Java Swing写一个登录界面
查看>>
java添加录音,java录音程序
查看>>
php xml 没有报文头,解决php输出xml设置header头Content-type:text/xml的方法
查看>>
php简化URL路径,php – 修改(简化)主题标题以便在url中显示
查看>>
php设计的个人页面成品,PHP仿个人博客(1)数据库与界面设计
查看>>
php函数改变表格颜色,php把一个颜色变深的函数示例开发详解
查看>>
go php 组合,Go语言组合和方法集
查看>>
matlab求图像峰度与斜度,python中的图像偏斜和峰度
查看>>