ImageLoader图片加载框架
来源:互联网 发布:淘宝互刷群沈阳 编辑:程序博客网 时间:2024/04/29 23:47
1.特点多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、缓存图片至内存时,可以更加高效的工作
4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
5、支持图片的内存缓存,SD卡(文件)缓存
6、在网络速度较慢时,还可以对图片进行加载并设置下载监听Android上最让人头疼的莫过于从网络获取图片、显示、回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你。Universal Image Loader for Android的目的是为了实现异步的网络图片加载、缓存及显示,支持多线程异步加载。它最初来源于Fedor Vlasov的项目,且自此之后,经过大规模的重构和改进。
特性列举:
1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
3.支持图片的内存缓存,文件系统缓存或者SD卡缓存
4.支持图片下载过程的监听
5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7.提供在较慢的网络下对图片进行加载
使用过程:
创建默认的ImageLoader,所有的操作都由ImageLoader控制。该类使用单例设计模式,所以如果要获取该类的实力,需要调用getInstance()方法。在使用ImageLoader显示图片之前,你首先要初始化它的配置,调用ImageLoaderConfiguration的init()方法,然后你就可以实现各种的显示了。
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> >1.在gradle中添加远程依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' >2.创建一个类,继承Application File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"imgages"); //初始化组件,链式开发思想,整个框架的参数初始化配置 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽 .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .memoryCacheSizePercentage(13) // default .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .diskCacheFileCount(100) // 可以缓存的文件数量 .diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() // 打印debug log .build(); ImageLoader.getInstance().init(configuration); >3.创建一个类,用于给图片设置参数 public static DisplayImageOptions getDisplayImageOption() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true) .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.ARGB_8888)//设置图片的解码类型// .displayer(new RoundedBitmapDisplayer(50))//是否设置为圆角,弧度为多少// .displayer(new FadeInBitmapDisplayer(2000))//是否图片加载好后渐入的动画时间 .build();//构建完成 return options; } >4.在Activity中获取框架的实例 ImageLoader imageLoaderInstance = ImageLoader.getInstance(); // imageLoaderInstance.displayImage(imageUrl, 图片控件,ImageLoaderUtils_circle.getDisplayImageOption());
- Imageloader图片加载框架
- 图片加载框架-ImageLoader
- ImageLoader 图片加载框架
- ImageLoader 图片加载框架
- ImageLoader图片加载框架
- Android图片加载框架ImageLoader
- Android_图片加载框架---ImageLoader
- imageLoader加载图片的框架
- Android 框架-ImageLoader 图片加载框架
- 图片加载框架--ImageLoader实现(二)
- 图片加载框架--ImageLoader实现(二)
- 图片加载框架--ImageLoader实现(二)
- 异步加载图片框架ImageLoader的使用
- ImageLoader异步加载图片框架浅谈
- 图片加载的框架 Imageloader Picasso Glide
- 【Android 基础】图片加载框架之ImageLoader
- Android 使用ImageLoader框架进行图片加载
- 古老的图片加载框架-----ImageLoader
- android 7.0安装apk失败
- xcode9报错compiling ib doucument for earlier than ios7 is no longer supported
- Kotlin官方文档翻译—概述
- python实践项目(六)
- 猜计算机随机数
- ImageLoader图片加载框架
- php利用腾讯ip分享计划获取地理位置示例分享
- 运行.xcworkspace项目后报错:'React/RCTBundleURLProvider.h’ file not found
- Spark学习之路-Spark集群搭建
- 移动端安卓车牌识别sdk开发包分享
- opencv 4通道转换成三通道
- Kotlin 一统天下?Kotlin/Native 开始支持 iOS 和 Web 开发
- The forked VM terminated without saying properly goodbye VM crash or System.exit called?
- Sublime Text3激活及个性化配置