1、首先在当前程序的Application中调用ImageLoader的初始化init()方法

[java] view plain copy
  1. private void initImageLoader() {
  2. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).imageDownloader(
  3. new BaseImageDownloader(this, 60 * 1000, 60 * 1000)) // connectTimeout超时时间
  4. .build();
  5. ImageLoader.getInstance().init(config);
  6. }

2、下载图片的参数选项配置

[java] view plain copy
  1. /**
  2. * 调用该方法下载图片
  3. * 配置imageLoader图片选项
  4. * @param iv  显示图片控件
  5. * @param url  网络或本地图片地址
  6. * @param defaultPic  默认图片
  7. * @param isRound  true为圆形,false不处理
  8. * @param cacheOnDisk true缓存到SD卡,false不缓存到SD卡
  9. */
  10. public static void displayImages(ImageView iv,String url,int defaultPic,boolean isRound,boolean cacheOnDisk){
  11. //配置一些图片选项
  12. DisplayImageOptions options = new DisplayImageOptions.Builder()
  13. .showImageOnLoading(defaultPic)// 设置图片在下载期间显示的图片
  14. .showImageForEmptyUri(defaultPic)// 设置图片Uri为空或是错误的时候显示的图片
  15. .showImageOnFail(defaultPic)// 设置图片加载/解码过程中错误时候显示的图片
  16. .cacheInMemory(false)// 设置下载的图片是否缓存在内存中
  17. .cacheOnDisk(cacheOnDisk)// 设置下载的图片是否缓存在SD卡中
  18. .considerExifParams(true)//是否考虑JPEG图像EXIF参数(旋转,翻转)
  19. .displayer(isRound ? new CircleBitmapDisplayer() : new SimpleBitmapDisplayer())//FadeInBitmapDisplayer(200)listview加载闪烁问题
  20. .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)//图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
  21. .bitmapConfig(Bitmap.Config.RGB_565)//图片色彩565
  22. .build();
  23. imageLoader.displayImage(url, iv, options);

3、扩展,图片显示方式,圆角;CircleBitmapDisplayer()

[java] view plain copy
  1. private static class CircleBitmapDisplayer implements BitmapDisplayer {
  2. final int margin ;
  3. public CircleBitmapDisplayer() {
  4. this(0);
  5. }
  6. public CircleBitmapDisplayer(int margin) {
  7. this.margin = margin;
  8. }
  9. @Override
  10. public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) {
  11. if (!(imageAware instanceof ImageViewAware)) {
  12. throw new IllegalArgumentException("ImageAware should wrap ImageView. ImageViewAware is expected.");
  13. }
  14. imageAware.setImageBitmap(ToRoundBitmap.toRoundBitmap(bitmap));
  15. }
  16. }

4、返回圆形bitmap;toRoundBitmap()

[java] view plain copy
  1. public static  Bitmap toRoundBitmap(Bitmap bitmap) {
  2. int width = bitmap.getWidth();
  3. int height = bitmap.getHeight();
  4. float roundPx;
  5. float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;
  6. if (width <= height) {
  7. roundPx = width / 2;
  8. top = 0;
  9. left = 0;
  10. bottom = width;
  11. right = width;
  12. height = width;
  13. dst_left = 0;
  14. dst_top = 0;
  15. dst_right = width;
  16. dst_bottom = width;
  17. } else {
  18. roundPx = height / 2;
  19. float clip = (width - height) / 2;
  20. left = clip;
  21. right = width - clip;
  22. top = 0;
  23. bottom = height;
  24. width = height;
  25. dst_left = 0;
  26. dst_top = 0;
  27. dst_right = height;
  28. dst_bottom = height;
  29. }
  30. Bitmap output = Bitmap.createBitmap(width,height, Config.ARGB_8888);
  31. Canvas canvas = new Canvas(output);
  32. final int color = 0xff424242;
  33. final Paint paint = new Paint();
  34. final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom);
  35. final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom);
  36. final RectF rectF = new RectF(dst);
  37. paint.setAntiAlias(true);
  38. canvas.drawARGB(0, 0, 0, 0);
  39. paint.setColor(Color.WHITE);
  40. paint.setStrokeWidth(4);
  41. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
  42. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  43. canvas.drawBitmap(bitmap, src, dst, paint);
  44. return output ;
  45. }

5、根据图片uri返回bitmap;此缓存位置为内存

[java] view plain copy
  1. public static Bitmap getBitmapUtils(String imgUri){
  2. return imageLoader.getMemoryCache().get(imgUri);
  3. }

6、根据图片uri返回File;此缓存位置为sd卡

[java] view plain copy
  1. public static File getFileUtils(String imgUri){
  2. return imageLoader.getDiskCache().get(imgUri);
  3. }

7、获取imageloader缓存所有图片总计大小

[java] view plain copy
  1. public static long getCacheFileSize(){
  2. File disCacheFile = imageLoader.getDiskCache().getDirectory();
  3. long size = 0;
  4. for(int i=0; i<disCacheFile.listFiles().length; i++){
  5. size += disCacheFile.listFiles()[i].length();
  6. }
  7. return size;
  8. }

8、清除图片缓存

[java] view plain copy
  1. public static void clearImageCache(){
  2. imageLoader.clearDiskCache();//清除磁盘缓存
  3. imageLoader.clearMemoryCache();//清除内存缓存
  4. }

ImageLoader初始化以及调用的更多相关文章

  1. win7运行sqlplus报错“SP2-1503: 无法初始化 Oracle 调用界面”

    WIN7 64bit安装Oracle 10.2.0.1后,运行cmd-sqlplus / as sysdba会提示: C:\Users\Liu>sqlplus / as sysdba SP2-1 ...

  2. SP2-1503: 无法初始化 Oracle 调用界面

    问题描述: win7下,cmd运行 输入sqlplus报一下错误 SP2-1503: 无法初始化 Oracle 调用界面 SP2-0152: ORACLE 不能正常工作 解决办法 1.cmd右键--以 ...

  3. Java学习笔记11---静态成员变量、静态代码块、成员变量及构造方法的初始化或调用顺序

    当创建一个对象时,各种成员变量及构造方法的初始化或调用顺序是怎样的呢? (1).如果类尚未加载,则先初始化静态成员变量和静态代码块,再初始化成员变量,最后调用相应的构造方法: (2).如果类已经加载过 ...

  4. 排错-SP2-1503:无法初始化Oracle调用界面解决

    SP2-1503:无法初始化Oracle调用界面解决 by:授客 QQ:1033553122 SP2-1503:无法初始化Oracle调用界面解决 问题描述: win7下,cmd运行输入sqlplus ...

  5. Win7下SQLPlus登录时报错"SP2-1503:无法初始化Oracle调用界面"

    Oracle安装完毕,使用SQLPlus登录的时候报错"SP2-1503:无法初始化Oracle调用界面",然后一闪界面关闭,报错界面如下: 这个是因为在Win7需要管理员权限,右 ...

  6. 基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式

    一.static关键字 1.1.static关键字 静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数)static 修饰的内容,所有对象共享当成员被静态修饰后,就多了一个调用方式 ...

  7. class类初始化之后调用赋值问题记录

    class PWSTRDELL: def __init__(self, pw_str):#该方法在类实例化时会自动调用 self.pw = pw_str self.strength_level = 0 ...

  8. Android 12(S) 图像显示系统 - HWC HAL 初始化与调用流程

    必读: Android 12(S) 图像显示系统 - 开篇 接口定义 源码位置:/hardware/interfaces/graphics/composer/ 在源码目录下可以看到4个版本的HIDL ...

  9. Web开发中Listener、Filter、Servlet的初始化及调用

    我们在使用Spring+SpringMVC开发项目中,web.xml中一般的配置如下: <?xml version="1.0" encoding="UTF-8&qu ...

随机推荐

  1. iOS十进制切割格式转换

    //@"123456789" 转换后 @"123,456,789" @interface NSString (num) - (NSString *)money; ...

  2. 有谁知道Delphi中"窗口"的创建过程?

      求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...

  3. WebLogic使用总结(三)——WebLogic配置JNDI数据源

    一.在WebLogic新建针对Oracle数据库的JNDI数据源 进入weblogic管理控制台,此处是远程访问:http://192.168.1.144:7001/console 点击左侧[ 域结构 ...

  4. 如何给Windows Server 2012 R2 添加“磁盘清理”选项

    最近想做一个试验,把我的Windows Server 2008 R2 升级为Server 2012 R2,因为手头没有Raid卡和网卡的驱动,所以做了升级安装,于是那个讨厌的Windows.old出现 ...

  5. 对数据集“dsArea”执行查询失败。 (rsErrorExecutingCommand),Query execution failed for dataset 'dsArea'. (rsErrorExecutingCommand),Manually process the TFS data warehouse and analysis services cube

    错误提示: 处理报表时出错. (rsProcessingAborted)对数据集“dsArea”执行查询失败. (rsErrorExecutingCommand)Team System 多维数据集或者 ...

  6. ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { ...

  7. C#编程(四十一)----------用户定义的数据类型转换

    用户定义的数据类型转换 C#允许定义自己的 数据类型,这意味着需要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...

  8. 【pycharm】在pycharm上,使用python的pip安装tensorflow过程

    如题:在pycharm上,使用python的pip安装tensorflow过程 最后成功安装的版本信息是: python版本是3.6.5 pip版本是9.0.1 pycharm版本是2018.1 te ...

  9. ANDROID DisplayManager 服务解析一

    from://http://blog.csdn.net/goohong/article/details/8536102 http://www.tuicool.com/articles/FJVFnu A ...

  10. 解决VS2010连接VSS时,Access to file"\\***\rights.dat" denied

    1.通过VS2010打开项目链接VSS后,提示 Access to file"\\***\rights.dat" denied. 该提示是指没有网络访问的权限,用户要在共享文件夹有 ...