UIL的使用
来源:互联网 发布:supreme淘宝哪家正 编辑:程序博客网 时间:2024/06/06 01:10
UIL的使用
Android-Universal-Image-Loader(UIL)是最常用的几个开源库之一。UIL(Universal-Image-Loader)旨在提供一个强大的、灵活的和高度可定制的工具图像加载、缓存和显示功能。并且提供了许多配置选项和良好控制图像加载和缓存的过程。
项目地址:
https://github.com/nostra13/Android-Universal-Image-Loader
基本使用方法:
引入jar包
采用Android Studio开发项目了,我们只需要build.gradle中添加以下依赖即可:compile'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
由于是使用过程中会图片获取要通过网络,并且有缓存设置,所以这2个权限必须要有。
1. <uses-permission android:name="android.permission.INTERNET" />
2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在Application中初始化
public classUILApplicationextendsApplication {
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressWarnings("unused")
@Override
public void onCreate() {
super.onCreate();
initImageLoader(getApplicationContext());
}
public static void initImageLoader(Context context) {
/*
* configuration表示ImageLoader的全局配置信息,创建ImageLoader时使用
* 可包括图片最大尺寸,线程池,缓存,下载器,解码器等等。
* 这里可以根据需要自行配置,修改慎重!
* */
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(480,800)/*解析图片时候使用的最大尺寸,默认为屏幕设备宽高*/
.diskCacheExtraOptions(480,800, null)/*从网络下载图片后保存到磁盘时使用的图片尺寸及压缩方法,如果不设置则保存原始图片*/
.threadPoolSize(3)/*线程池的大小,默认值为3,注意不要设置的过大,过大之后会有OOM问题*/
.threadPriority(Thread.NORM_PRIORITY-1)/*设置线程的优先级别:5-1*/
/*
* tasksProcessingOrder:设置图片加载和显示队列处理的类型默认为QueueProcessingType.
FIFO注:如果设置了taskExecutor或者taskExecutorForCachedImages 此设置无效
*/
.tasksProcessingOrder(QueueProcessingType.FIFO)
.memoryCache(new LruMemoryCache(2*1024 * 1024))/*设置内存缓存 默认为一个当前应用可用内存的1/8大小的LruMemoryCache*/
.memoryCacheSize(2*1024 * 1014)/*设置内存缓存的最大大小 默认为一个当前应用可用内存的1/8 */
.memoryCacheSizePercentage(13)/*设置内存缓存最大大小占当前应用可用内存的百分比默认为一个当前应用可用内存的1/8*/
.diskCache(newUnlimitedDiskCache(StorageUtils.getCacheDirectory(context)))/*默认为StorageUtils.getCacheDirectory(getApplicationContext()),即/mnt/sdcard/android/data/包名/cache/*/
.diskCacheSize(50*1024 * 1024)/*设置硬盘缓存的最大大小*/
.diskCacheFileCount(100)/*设置硬盘缓存的文件的最多个数*/
.diskCacheFileNameGenerator(newHashCodeFileNameGenerator())/*设置硬盘缓存文件名生成规范*/
.imageDownloader(newBaseImageDownloader(context))/*设置图片下载器*/
.imageDecoder(DefaultConfigurationFactory.createImageDecoder(false))/*设置图片解码器*/
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())/*设置默认的图片显示选项*/
.denyCacheImageMultipleSizesInMemory()/*不缓存图片的多种尺寸在内存中*/
.writeDebugLogs()/*打印调试Log,注意上线之前要去掉这句话*/
.imageDownloader(/*图片下载器的设置*/
new BaseImageDownloader(context,5* 1000,30* 100)/*(connectTimeout,readTimeout)超时时间*/
)
.build();
ImageLoader.getInstance().init(configuration);/*使用基本配置信息初始化ImageLoader*/
}
}
注:通常一个应用程序只需要对ImageLoader进行一次初始化,当用户想修改ImageLoader的配置时,重新条用init函数并不会有效果(这个后面会在源码中分析),必须将原来的ImageLoader销毁,初始化新的ImageLoader。
图片加载:
使用ImageLoader进行图片加载的时候,先要实例化ImageLoader,调用以下方法进行实例化,在每个布局里面都要实例化后再使用。
1. protected ImageLoader imageLoader = ImageLoader.getInstance();
Ø 加载默认配置的图片
ImageLoader.getInstance().displayImage(imageUrl, imageView);
// imageUrl代表图片的URL地址,imageView代表承载图片的IMAGEVIEW控件
当然UIL不仅可以加载网络图片,还可以加载本地图片,以下是几种不同来源的图片的url地址示例:
String imageUri ="http://site.com/image.png";//from Web
String imageUri ="file:///mnt/sdcard/image.png";//from SD card
String imageUri ="content://media/external/audio/albumart/13";//from content provider
String imageUri ="assets://image.png";// fromassets
String imageUri ="drawable://"+ R.drawable.image;// fromdrawables (only images, non-9patch)
Ø 加载自定义配置的图片
进行显示的图片的各种格式DisplayImageOptions 的设置:
DisplayImageOptionsoptions;
options = newDisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)//设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//
.decodingOptions(android.graphics.BitmapFactory.OptionsdecodingOptions)//设置图片的解码配置
//.delayBeforeLoading(intdelayInMillis)//int delayInMillis为你设置的下载前的延迟时间
//设置图片加入缓存前,对bitmap进行设置
//.preProcessor(BitmapProcessorpreProcessor)
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(newRoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少
.displayer(newFadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间
.build();//构建完成
加载图片:
ImageLoader.getInstance().displayImage(imageUrl, imageView,options);
// imageUrl代表图片的URL地址,imageView代表承载图片的IMAGEVIEW控件 , options代表DisplayImageOptions配置文件
Ø 图片加载时带加载监听
imageLoade.displayImage(imageUrl, imageView,options, newImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri,View view) {
//开始加载的时候执行
}
@Override
public void onLoadingFailed(String imageUri,View view,FailReason failReason) {
//加载失败的时候执行
}
@Override
public void onLoadingComplete(StringimageUri,View view,BitmaploadedImage) {
//加载成功的时候执行
}
@Override public void onLoadingCancelled(String imageUri, View view){ //加载取消的时候执行 } }, new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { //在这里更新 ProgressBar的进度信息 } });
Ø 通多loadImage加载图片
除了通过displayImage,加载并自动显示图片,还可以通过loadImage下载图片,再手动加载到imageView上。
imgDemoPic=(ImageView)findViewById(R.id.imgDemoPic);//imageView用来显示图片
ImageSizemImageSize=newImageSize(100,100);
ImageLoader.getInstance().loadImage(imageUrl,mImageSize,newSimpleImageLoadingListener(){
@Override
public void onLoadingComplete(StringimageUri,View view,BitmaploadedImage) {
super.onLoadingComplete(imageUri,view,loadedImage);
imgDemoPic.setImageBitmap(loadedImage);//显示在imageView上面
}
});
- UIL的使用
- UIL开源框架的使用
- UIL的源码分析
- uil的简单常用操作
- 连接不同数据的UIL
- Android使用UIL加载圆角图片不显示的问题及解决办法
- UIL加载图片的时候注意
- 图片加载 经典的UIL框架
- 图片加载UIL的Disk缓存策略
- Android-Universal-Image-Loader(UIL)使用分析
- Universal-Image-Loader(UIL)图片加载框架使用简单介绍
- (universal Image Loader)UIL 使用 (1)
- (universal Image Loader)UIL 使用 (2)
- UIL BLL DAL Model各层的引用问题
- android-UIL图片缓存框架 主要类包括的成员
- Android——UIL实现图片缓存基本配置及使用
- 解决RecyclerView中使用UIL加载网络图片,在刷新时出现闪烁问题
- 【UIL框架】Universal-Image-Loader完全解析(一)之介绍与使用详解
- 【字典树】字典树的创建(入门详细介绍)
- Python repr() 函数和str() 函数
- drawable文件夹下的文件类型
- 题目845 无主之地1
- 初学者的福利6:杨辉三角
- UIL的使用
- 单例模式
- 2016 Multi-University Training Contest 4 1005Lucky7
- EBCDIC、ASCII与EBCDIC的关系及相互转化
- ORACLE函数之日期时间运算函数
- 深入理解Android之Gradle
- CocoaPods的安装和使用
- Access程序从txt文件导入数据至数据库的DoCmd.TransferText方法
- percona