图片异步加载框架 Android-Universal-Image-Loader

来源:互联网 发布:伪钞制造者 知乎 编辑:程序博客网 时间:2024/05/02 01:19

特点

  • 多线程图片加载
  • 尽可能多的配置选项(线程池,加载器,解析器,内存/磁盘缓存,显示参数等等)
  • 图片可以缓存在内存中,或者设备文件目录下,或者SD卡中
  • 可以监听加载进度
  • 可以自定义显示每一张图片时都带不同参数
  • 支持Widget

jar包下载


1.自定义XXXAppllication类,初始化ImageLoader

[java] view plaincopy
  1. public class XXXApplication extends Application {  
  2.     @Override  
  3.     public void onCreate() {  
  4.         super.onCreate();  
  5.   
  6.         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())  
  7.             .denyCacheImageMultipleSizesInMemory()  
  8.             .memoryCache(new LruMemoryCache(2 * 1024 * 1024))  
  9.             .memoryCacheSize(2 * 1024 * 1024)  
  10.             .discCacheSize(50 * 1024 * 1024)  
  11.             .denyCacheImageMultipleSizesInMemory()    
  12.             .discCacheFileNameGenerator(new Md5FileNameGenerator())    
  13.             .tasksProcessingOrder(QueueProcessingType.LIFO)    
  14.             .discCacheFileCount(100)  
  15.             .writeDebugLogs()  
  16.             .build();  
  17.         ImageLoader.getInstance().init(config);  
  18.     }  
  19. }  

2.在AndroidManifest.xml文件的application标签里加入

[java] view plaincopy
  1. android:name=".XXXApplication"  

3.使用imageloader

[java] view plaincopy
  1. public class ImageManager{  
  2.   
  3.      public static void Load(String imgUrl,ImageView imageView){  
  4.         ImageLoader.getInstance().displayImage(imgUrl, imageView);  
  5.      }  
  6.   
  7.      public static void Load(String imgUrl,ImageView imageView,DisplayImageOptions o){  
  8.          ImageLoader.getInstance().displayImage(imgUrl, imageView,o);  
  9.      }  
  10. }  

4.部分参数介绍

[java] view plaincopy
  1.      //设置图片在下载期间显示的图片  
  2.      showStubImage(R.drawable.ic_launcher)  
  3.    
  4.      //设置图片Uri为空或是错误的时候显示的图片  
  5.      showImageForEmptyUri(R.drawable.ic_empty)  
  6.    
  7.      //设置图片加载/解码过程中错误时候显示的图片  
  8.      showImageOnFail(R.drawable.ic_error)  
  9.    
  10.      //设置图片在下载前是否重置,复位  
  11.      resetViewBeforeLoading()  
  12.    
  13.      //设置下载的图片是否缓存在内存中  
  14.      cacheInMemory()  
  15.    
  16.      //设置下载的图片是否缓存在SD卡中  
  17.      cacheOnDisc()  
  18.    
  19.      //设置图片的解码类型  
  20.      bitmapConfig(Bitmap.Config.RGB_565)  
  21.    
  22.      //设置图片的解码配置  
  23.      decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)  
  24.    
  25.      //设置图片下载前的延迟  
  26.      delayBeforeLoading(int delayInMillis)  
  27.    
  28.      //设置额外的内容给ImageDownloader  
  29.      extraForDownloader(Object extra)  
  30.    
  31.      //设置图片加入缓存前,对bitmap进行设置  
  32.      preProcessor(BitmapProcessor preProcessor)  
  33.    
  34.      //设置显示前的图片,显示后这个图片一直保留在缓存中  
  35.      postProcessor(BitmapProcessor postProcessor)  
  36.    
  37.      //设置图片以如何的编码方式显示  
  38.      imageScaleType(ImageScaleType imageScaleType)  
  39.   
  40. /** 
  41.  * 设置图片的显示方式 
  42.  * @param displayer 
  43.  */  
  44. displayer(BitmapDisplayer displayer)  
  45. displayer:  
  46.           RoundedBitmapDisplayer(int roundPixels)设置圆角图片  
  47.           FakeBitmapDisplayer()这个类什么都没做  
  48.           FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间  
  49.      SimpleBitmapDisplayer()正常显示一张图片    
  50.   
  51.   
  52. /** 
  53.  * 图片的缩放方式 
  54.  * @param imageScaleType 
  55.  */  
  56.     imageScaleType(ImageScaleType imageScaleType)  
  57.     imageScaleType:  
  58.                    EXACTLY :图像将完全按比例缩小的目标大小  
  59.                    EXACTLY_STRETCHED:图片会缩放到目标大小完全  
  60.                    IN_SAMPLE_INT:图像将被二次采样的整数倍  
  61.                    IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小  
  62.                    NONE:图片不会调整  
  63.   
  64. /** 
  65. *DisplayImageOptions简单示例 
  66. */  
  67. // 创建默认的DisplayImageOptions  
  68. DisplayImageOptions option_0=DisplayImageOptions.createSimple();  
  69. // 使用DisplayImageOptions.Builder()创建DisplayImageOptions  
  70. DisplayImageOptions options = new DisplayImageOptions.Builder()    
  71.     .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)  
  72.     .showStubImage(R.drawable.loading)    
  73.     .showImageForEmptyUri(R.drawable.load_fail)    
  74.     .showImageOnFail(R.drawable.load_fail)    
  75.     .cacheInMemory(true)    
  76.     .cacheOnDisc(true)      
  77.     .build();   

5.最后别忘了权限

[java] view plaincopy
  1. <uses-permission android:name="android.permission.INTERNET" />  
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  3. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  

1 0