分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
原文:http://blog.csdn.net/wei18359100306/article/details/41920677
如果说评价一下哪个图片开源库最被广泛使用的话,我想应该可以说是Universal-Image-Loader,在主流的应用中如
果你随便去反编译几个,基本都能看到他的身影,它就像个图片加载守护者,默默的守护着图片加载。相信很多人对
这个异步加载图片框架还不是很熟,再加上最近它更改优化了好几个地方,而网上的大部分资料还是以前的,于是花
了几天时间专门的研究了下开源框架Universal-Image-Loader(实际上是近期项目刚好用到,且仔细的考虑过各种情
况),希望对新手能有所帮助,也希望大神能指点下。
该项目的Github地址链接:https://github.com/nostra13/Android-Universal-Image-Loader
Github登陆不了的可以链接这里下载:点击
一、功能特性:
1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
- "http://site.com/image.png" // from Web
- "file:///mnt/sdcard/image.png" // from SD card
- "file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
- "content://media/external/images/media/13" // from content provider
- "content://media/external/video/media/13" // from content provider (video thumbnail)
- "assets://image.png" // from assets
- "drawable://" + R.drawable.img // from drawables (non-9patch images)
2、支持通过“listener”监视加载的过程,可以暂停加载图片,在经常使用的ListView、GridView中,可以设置滑动时暂
停加载,停止滑动时加载图片(便于节约流量,在一些优化中可以使用)
3、缓存图片至内存时,可以更加高效的工作
4、高度可定制化(可以根据自己的需求进行各种配置,如:线程池,图片下载器,内存缓存策略等)
5、支持图片的内存缓存,SD卡(文件)缓存
6、在网络速度较慢时,还可以对图片进行加载并设置下载监听
二、配置详解
1、下载jar包放在libs文件夹中
注:Maven dependency:
- <dependency>
- <groupId>com.nostra13.universalimageloader</groupId>
- <artifactId>universal-image-loader</artifactId>
- <version>1.9.3</version>
- </dependency>
Gradle dependency:
- compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
2、AndroidManifest.xml
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.INTERNET" />
3、在应用中配置ImageLoaderConfiguration参数(只能配置一次,如多次配置,则默认第一次的配置参数)
a、使用默认设置
- ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
b、自己配置参数
- File cacheDir = StorageUtils.getCacheDirectory(context);
- ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
- .memoryCacheExtraOptions(480, 800)
- .diskCacheExtraOptions(480, 800, null)
- .taskExecutor(...)
- .taskExecutorForCachedImages(...)
- .threadPoolSize(3)
- .threadPriority(Thread.NORM_PRIORITY - 2)
- .tasksProcessingOrder(QueueProcessingType.FIFO)
- .denyCacheImageMultipleSizesInMemory()
- .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
- .memoryCacheSize(2 * 1024 * 1024)
- .memoryCacheSizePercentage(13)
- .diskCache(new UnlimitedDiscCache(cacheDir))
- .diskCacheSize(50 * 1024 * 1024)
- .diskCacheFileCount(100)
-
- .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
- .imageDownloader(new BaseImageDownloader(context))
- .imageDecoder(new BaseImageDecoder())
- .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
- .writeDebugLogs()
- .build();
配置好ImageLoaderConfiguration,一定不要忘记进行初始化操作(一般在application中进行初始化)
- ImageLoader.getInstance().init(config);
注:上面的配置请根据自己的需要进行配置,不是所有的都要进行配置的
4、图片显示操作
a、首先要得到ImageLoader的实例(使用的单例模式)
- ImageLoader imageLoader = ImageLoader.getInstance();
注:在每个显示任务(布局中都需实例化才能进行相关操作
b、相关显示参数配置
- DisplayImageOptions options = new DisplayImageOptions.Builder()
- .showImageOnLoading(R.drawable.ic_stub)
- .showImageForEmptyUri(R.drawable.ic_empty)
- .showImageOnFail(R.drawable.ic_error)
- .resetViewBeforeLoading(false)
- .delayBeforeLoading(1000)
- .cacheInMemory(false)
- .cacheOnDisk(false)
- .preProcessor(...)
- .postProcessor(...)
- .extraForDownloader(...)
- .considerExifParams(false)
- .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
- .bitmapConfig(Bitmap.Config.ARGB_8888)
- .decodingOptions(...)
- .displayer(new SimpleBitmapDisplayer())
- .handler(new Handler())
- .build();
注:如果DisplayImageOption没有传递给ImageLoader.displayImage(…)方法,那么从配置默认显示选项
(ImageLoaderConfiguration.defaultDisplayImageOptions(…))将被使用。
- 1).imageScaleType(ImageScaleType imageScaleType)
- 缩放类型mageScaleType:
- EXACTLY :图像将完全按比例缩小的目标大小
- EXACTLY_STRETCHED:图片会缩放到目标大小完全
- IN_SAMPLE_INT:图像将被二次采样的整数倍
- IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
- NONE:图片不会调整
- 2).displayer(BitmapDisplayer displayer)
- 显示方式displayer:
- RoundedBitmapDisplayer(int roundPixels)设置圆角图片
- FakeBitmapDisplayer()这个类什么都没做
- FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间
- SimpleBitmapDisplayer()正常显示一张图片
参数补充:
- .considerExifParams(true)