当前主要的开源图片加载引擎

来源:互联网 发布:mac怎么选中多个文件 编辑:程序博客网 时间:2024/06/05 03:30

首次启动非首次启动(退出应用杀掉进程)非首次启动(按back退出应用但进程在后台存活)第一页完成显示快速滑动到末尾页完成显示第一页完成显示快速滑动到末尾页完成显示第一页完成显示快速滑动到末尾页完成显示支持的图片类型耗时占用内存耗时占用内存耗时占用内存耗时占用内存耗时占用内存耗时占用内存UIL99605.51634710.131802.561808.4409.07519.07png,jpegFresco54451.41155852.24801.13511.611352.492582.8png,jpeg,gif,webpGlide258246.151632013.363062.762285.982414.0310814.03png,jpeg,gif,moviePicasso336726.383219913.089126.2572015.63316.13016.13png,jpegVolley95583.36752719.136752.0854619.015721.3518621.35png,jpeg注1:10张图片,1080*720 5张 + 960*540 5张。页面显示区每页可以完整显示3张图片。
注2:首次启动认为不含有在内存或Disk上的缓存。非首次启动为后台杀掉进程后,重新启动。
注3:WIFI Android4.4.2 3G内存 高通骁龙801 2.5GHz四核。首次启动Fresco的体验最佳,第一屏刷新的最快。在已经有本地缓存的情况下,UIL体验最佳。在全部载入到内存的情况下,Picasso的表现最好。

上面是我实测的现在主要的开源引擎性能表现。下面就来具体看一看他们。部分内容有转载:)

UIL --- Android-Universal-Image-Loader

https://github.com/nostra13/Android-Universal-Image-Loader

特点:

  1. 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
  2. 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
  3. 支持图片的内存缓存,文件系统缓存或者SD卡缓存
  4. 支持图片下载过程的监听
  5. 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
  6. 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
  7. 提供在较慢的网络下对图片进行加载
Sample:

初始化

  1. public class MyApplication extends Application {  
  2.   
  3.     @Override  
  4.     public void onCreate() {  
  5.         super.onCreate();  
  6.   
  7.         //创建默认的ImageLoader配置参数  
  8.         ImageLoaderConfiguration configuration = ImageLoaderConfiguration  
  9.                 .createDefault(this);  
  10.           
  11.         //Initialize ImageLoader with configuration.  
  12.         ImageLoader.getInstance().init(configuration);  
  13.     }  
  14.   
  15. }  

可配置项

  1. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)  
  2.         .memoryCacheExtraOptions(480800// default = device screen dimensions  
  3.         .diskCacheExtraOptions(480800, CompressFormat.JPEG, 75null)  
  4.         .taskExecutor(...)  
  5.         .taskExecutorForCachedImages(...)  
  6.         .threadPoolSize(3// default  
  7.         .threadPriority(Thread.NORM_PRIORITY - 1// default  
  8.         .tasksProcessingOrder(QueueProcessingType.FIFO) // default  
  9.         .denyCacheImageMultipleSizesInMemory()  
  10.         .memoryCache(new LruMemoryCache(2 * 1024 * 1024))  
  11.         .memoryCacheSize(2 * 1024 * 1024)  
  12.         .memoryCacheSizePercentage(13// default  
  13.         .diskCache(new UnlimitedDiscCache(cacheDir)) // default  
  14.         .diskCacheSize(50 * 1024 * 1024)  
  15.         .diskCacheFileCount(100)  
  16.         .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default  
  17.         .imageDownloader(new BaseImageDownloader(context)) // default  
  18.         .imageDecoder(new BaseImageDecoder()) // default  
  19.         .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default  
  20.         .writeDebugLogs()  
  21.         .build();  
使用时

  1. final ImageView mImageView = (ImageView) findViewById(R.id.image);  
  2.         String imageUrl = "https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg";  
  3.         ImageSize mImageSize = new ImageSize(100100);  
  4.           
  5.         //显示图片的配置  
  6.         DisplayImageOptions options = new DisplayImageOptions.Builder()  
  7.                 .cacheInMemory(true)  
  8.                 .cacheOnDisk(true)  
  9.                 .bitmapConfig(Bitmap.Config.RGB_565)  
  10.                 .build();  
  11.           
  12.         ImageLoader.getInstance().loadImage(imageUrl, mImageSize, options, new SimpleImageLoadingListener(){  
  13.   
  14.             @Override  
  15.             public void onLoadingComplete(String imageUri, View view,  
  16.                     Bitmap loadedImage) {  
  17.                 super.onLoadingComplete(imageUri, view, loadedImage);  
  18.                 mImageView.setImageBitmap(loadedImage);  
  19.             }  
  20.               
  21.         });  

0 0
原创粉丝点击