Universal-Image-Loader的简单介绍和使用
来源:互联网 发布:淘宝商城女装卫衣套装 编辑:程序博客网 时间:2024/06/07 06:39
今天说的是Universal-Image-Loader的使用,它也是一个比较强大的开源的UI组件程序。它有如下几个特征
1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
3.支持图片的内存缓存,文件系统缓存或者SD卡缓存
4.支持图片下载过程的监听
5.根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
6.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
7.提供在较慢的网络下对图片进行加载
我自己本身项目中也挺多时候用到这个框架。今天的话我就把我项目中对 它的使用简化一下,也是希望大家能看得明白。
首先要在项目中的build.gradle文件中加入一下代码:
然后配置ImageLoaderConfiguration的全局变量,也是在Application文件中配置,看下代码 MyApplication.java:
/** * Created by Administrator on 2016/9/24. */public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //获得外部缓存空间 long maxSize=Runtime.getRuntime().maxMemory(); File dir = getExternalCacheDir();//获得外部缓存 ImageLoaderConfiguration imageLoader = new ImageLoaderConfiguration.Builder(getApplicationContext()) .memoryCacheExtraOptions(480, 800)// max width, max height,即保存的每个缓存文件的最大长宽 /*设置缓存的详细信息,不配或按需选配*/ .threadPoolSize(5)// 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2)//线程优先级,1~10优先级逐渐升高,10代表图片立即显示 .memoryCache(new UsingFreqLimitedMemoryCache((int) maxSize / 16))//内存缓存 .memoryCacheSize((int) maxSize / 16)//开辟16分之一内存缓存空间 .discCacheSize((int) maxSize / 16)//开辟16分之一磁盘缓存空间 .discCacheFileNameGenerator(new HashCodeFileNameGenerator())// 保存的时候的URI名称用MD5加密 .diskCache(new UnlimitedDiskCache(dir))//配置自定义缓存目录 .build();//开始构建 ImageLoader.getInstance().init(imageLoader);//初始化组件 }}
具体代码的话代码中都有添加注释,这里就不再啰嗦。ImageLoaderConfiguration通过new ImageLoaderConfiguration.Builder()得到,再通过各种方法设置我们缓存空间的大小和路径等等,最后通过build()开始构建。最后调用ImageLoader的getInstance的init()方法把全局配置作为参数实现初始化。
这样就算配置好简单的ImageLoaderConfiguration了。接下来我们还需要的是DisplayImageOption,简单来说就是我们所要展示的图片的各种配置的设置。
我把这个包装到工具类中,我们看下代码:
/** * Created by Administrator on 2016/9/24. * * 用于配置及显示图片加载后的图片工具类 */public class ImageLoaderUtils { public static DisplayImageOptions getDisplayImageOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//是否进行内存缓存 .cacheOnDisk(true)//是否进行磁盘缓存 .build();//构造生成DisplayImageOptions return options; }}看起来比较简单,当然它肯定不止这些方法,它还有showImagrOnFail(),displayer()方法等等等,前者表示图片加载出错时显示的图片,后者表示设置图片显示出来的特效,当然实际项目中对性能要求比较高,我一般没怎么用。通过一系列方法最后build()得到DisplayImageOption对象。到这里我们已经得到了两个必不可少的对象。现在我们看下代码怎么使用,首先是简单的布局文件,就是一个ImageView:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.administrator.universalimagerloadertest.MainActivity"> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Hello World!" /></RelativeLayout>下面看下MainActivity.java中的代码:
public class MainActivity extends AppCompatActivity { private String mImgUrl = "http://c.hiphotos.baidu.com/image/pic/item/5bafa40f4bfbfbed91fbb0837ef0f736aec31faf.jpg"; private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.imageView); DisplayImageOptions options = ImageLoaderUtils.getDisplayImageOptions(); ImageLoader.getInstance().displayImage(mImgUrl,mImageView,options); }}我们需要看的是
ImageLoader.getInstance().displayImage(mImgUrl,mImageView,options);这句,这只是其中的一种加载图片的方法,参数1代表的是图片的url地址,参数2代表的是展示图片的控件,参数3是我们设置的DisplayImageOptions。
还有一种常见的写法就是4个参数,前三个参数跟上面方法一样,第四个参数加了ImageLoadingListener的回调接口:
ImageLoader.getInstance().displayImage(mImgUrl, mImageView, options, new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { //加载开始的回调 } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { //加载出错的回调 } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { //加载完成的回调 } @Override public void onLoadingCancelled(String imageUri, View view) { //加载取消时的回调 } });
这样我们就可以在图片加载的各种过程中做一系列的操作。
好了。今天就到这里啦。
大家共勉!
- Universal-Image-Loader的简单介绍和使用
- universal-image-loader的使用及介绍
- android Universal-Image-Loader的简单使用
- Android-Universal-Image-Loader的简单使用
- universal-image-loader简单使用
- Universal-Image-Loader(UIL)图片加载框架使用简单介绍
- Universal-Image-Loader的使用
- Universal-Image-Loader的使用
- Universal-Image-Loader的使用
- Universal-Image-Loader 使用
- Universal-Image-Loader使用技巧和注意事项
- android-universal-image-loader的使用
- Android-Universal-Image-Loader的使用注意事项
- Android-Universal-Image-Loader的使用
- Android-Universal-Image-Loader 的使用
- Universal Image Loader的使用详解
- Android-Universal-Image-Loader 的使用
- Android中的Universal-Image-Loader的使用
- Cocos2d-x高斯模糊
- 面试题:十大经典算法总结(Javascript描述)
- java -- 传值与传引用
- MySQL数据类型 ENUM和SET
- Java-面向对象(基础篇)--实例讲解
- Universal-Image-Loader的简单介绍和使用
- viicms仿乐享微信源码官方版
- Android 加入购物车动画
- 配置php.ini令当使用$_REQUEST的时候保存的是get的数据
- Mybatis快速入门
- Java clone() 浅克隆与深度克隆
- 线性可分支持向量机(一)
- 23.基本认证机制
- BigDecimal进行精确运算(实现加减乘除运算)