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. 基于SmartThreadPool线程池技术实现多任务批量处理

    一.多线程技术应用场景介绍 本期同样带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何采用基于开源组件SmartThreadPool线程池技术实现多任务批量处理.在工作中您是否 ...

  2. DOM对象之document对象

    DOM对象:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. 打开网页后,首先看到的是浏览器窗口,即顶层的win ...

  3. ASP.NET MVC与Sql Server交互,把字典数据插入数据库

    在"ASP.NET MVC与Sql Server交互, 插入数据"中,在Controller中拼接sql语句.比如: _db.InsertData("insert int ...

  4. [转发]将Delphi的对象方法设为回调函数

    心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发.命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging. 原文地址:ht ...

  5. Net Framework 2.0 MSI returned error code 1603解决方法

    出现这种情况的原因,主要是用ghost做的系统,有很多系统中把ie给绑架了.下面的截图就是ghost做的系统中注册表的显示,通过上面的方法就可以解决这种Microsoft .NET Framework ...

  6. Linux init 0-6 启动级别

    原文地址:http://blog.sina.com.cn/s/blog_5f8e8d9801010wlr.html 原文地址:[转]Linux init 0-6 启动级别作者:流水清风 init 0- ...

  7. C#编程(七十二)----------DynamicObject和ExpandoObject

    DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例: //Ex ...

  8. C++类静态数据成员与类静态成员函数

    from:://http://blog.csdn.net/taina2008/article/details/1684834 把类中的函数都定义成静态函数,这样相当于在编译时就分配了空间,这样不需要实 ...

  9. HDU 4888 Redraw Beautiful Drawings 网络流 建图

    题意: 给定n, m, k 以下n个整数 a[n] 以下m个整数 b[n] 用数字[0,k]构造一个n*m的矩阵 若有唯一解则输出这个矩阵.若有多解输出Not Unique,若无解输出Impossib ...

  10. ASP.NET MVC:@helper 不能调试

    ASP.NET MVC 的 @helper 不能设置断点,当然我们可以将逻辑移动到扩展方法中,这里介绍另外一种方式,使用:System.Diagnostics.Debug.WriteLine,编程旅途 ...