Android 开源框架Universal-ImageLoader的使用
2016-06-30 16:26
351 查看
ImageLoader 是一个图片加载开源框架,他的很多优点帮助我们解决了开发中图片加载的大部分问题。优点如下:
高效加载。基于BitmapFactory.Options的inSampleSize属性缩放图片,减少了OOM的问题。
LRU缓存策略。LRU算法的核心思想是释放最近最少使用的缓存,ImageLoader内部用LruCache和DiskLruCache实现内存缓存和硬盘缓存,避免了过多的流量消耗等问题。
图片的同步加载和异步加载。在特定情况下,我们可以灵活使用不同的并发加载方式。
该项目存在于Github上面https://github.com/nostra13/Android-Universal-Image-Loader上。下载完后,我们从根目录中的downloads中获得jar文件,放入我们的开发环境(这里用的是Eclipse)的Libs里面,完成上面步骤,我们就开始使用ImageLoader了。
配置Android Manifest文件。
我们发现这个方法里面有4个参数。
URI:一般指要下载的路径。
targetImageSize:加载图像的的大小。
options:图片的具体配置。如下所示:
下面是这个方法的具体使用。
2、使用ImageLoader对象的DisplayImage方法。相对较为方便,一般使用格式:ImageLoader.getInstance().displayImage(uri, imageAware),参数说明:
URI:调用的地址:
imageAware:加载图片的View。
高效加载。基于BitmapFactory.Options的inSampleSize属性缩放图片,减少了OOM的问题。
LRU缓存策略。LRU算法的核心思想是释放最近最少使用的缓存,ImageLoader内部用LruCache和DiskLruCache实现内存缓存和硬盘缓存,避免了过多的流量消耗等问题。
图片的同步加载和异步加载。在特定情况下,我们可以灵活使用不同的并发加载方式。
该项目存在于Github上面https://github.com/nostra13/Android-Universal-Image-Loader上。下载完后,我们从根目录中的downloads中获得jar文件,放入我们的开发环境(这里用的是Eclipse)的Libs里面,完成上面步骤,我们就开始使用ImageLoader了。
使用ImageLoader之前的配置工作
创建一个继承自Application的类,在onCreate()中创建ImageLoader的配置参数。配置Android Manifest文件。
public class ImageLoaderConfigurationApption extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); ImageLoader.getInstance().init(configuration); } }
<!-- 配置文件 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name="com.example.imaeloader.ImageLoaderConfigurationApption"></application>
ImageLoader 异步加载图片的两种方式
1、使用ImageLoader对象的loadImage方法,在回调函数中设置Bitmap。一般是这样调用的ImageLoader.getInstance().loadImage(uri, targetImageSize, options, listener);我们发现这个方法里面有4个参数。
URI:一般指要下载的路径。
targetImageSize:加载图像的的大小。
options:图片的具体配置。如下所示:
DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.loading) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.error) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中 .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型 //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置 .delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间 //设置图片加入缓存前,对bitmap进行设置 //.preProcessor(BitmapProcessor preProcessor) .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动 .build();//构建完成4、listener,监听图片加载过程中的加载状态。
下面是这个方法的具体使用。
String uri="http://avatar.csdn.net/6/6/3/3_oxuanboy1.jpg"; //单位为PX。 ImageSize targetImageSize=new ImageSize(100, 100); ImageLoader.getInstance().loadImage(uri, targetImageSize, options, new ImageLoadingListener() { @Override public void onLoadingStarted(String arg0, View arg1) { // TODO Auto-generated method stub } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { // TODO Auto-generated method stub } //加载完成 @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { // TODO Auto-generated method stub } @Override public void onLoadingCancelled(String arg0, View arg1) { // TODO Auto-generated method stub } });
2、使用ImageLoader对象的DisplayImage方法。相对较为方便,一般使用格式:ImageLoader.getInstance().displayImage(uri, imageAware),参数说明:
URI:调用的地址:
imageAware:加载图片的View。
在GridView里面优化加载
当我们在GridView里面要显示很多图片的时候优化加载,比如在滑动列表的时候 ,和猛的下滑很多的时候。gridView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
相关文章推荐
- Android EditText 银行卡四位空一格
- Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现
- Android Studio系列教程6 (Gradle多渠道打包)
- Android Studio 使用起来很卡,内存CPU爆了
- 如何设置android studio让程序运行在真机中
- Android ListView加载多种布局
- Android布局属性
- Activity横竖屏切换时的生命周期
- Android获取SHA值
- android-invalidate()源码
- AndroidSweetSheet:ViewPager的实现(2)
- AndroidSweetSheet:ViewPager的实现(2)
- android 百度地图系列之地图初始化及定位
- android屏幕适配
- 短信管理器(SmsManager)
- Android开发学习之路-带文字的图片分享
- android studio 的oncreate 的 PersistableBundle persistentState
- Activity的生命周期理解笔记
- Android Studio插件整理
- 【Android】熟悉Android Studio以及其快捷键