Universal-Image-Loader使用详见

2017-01-14 10:03:45来源:http://www.jianshu.com/p/332240630607作者:三步之内必有一坑人点击

第七城市

#########################**Universal-Image-Loader**#############


在安卓经常要用到各种各样的图片加载框架,其中Universal-Image-Loader就是非常常用的一个,本人这个库也是用的最多的。


GITHUB上面的下载地址就是在这个位置:
https://github.com/nostra13/Android-Universal-Image-Loader。


Universal-Image-Loader有这几个特点:


1:安卓1.5以上都支持,所以基本所有版本都可以使用。


2:可以更具自己的需要设置(线程池的大小,缓存策略,不同加载过程中的图像)


3:可以监听加载过程 做出自己的逻辑代码


Universal-Image-Loader的使用过程:


    加入需要的JAR包并且右击ADD
配置权限(因为我们要实现图片的缓存和从网络加载图片)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在全局Application里面配置并初始化:

ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .memoryCacheExtraOptions(480, 800) // 每个缓存文件的大小 .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) //设置缓存的详细信息,最好不要设置这个 .threadPoolSize(3)//内部维护的线程数的大小.threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory().memoryCache(new UsingFreqLimitedMemoryCache(2 1024 1024)) //你可以通过自己的内存缓存实现 .memoryCacheSize(2 1024 1024) .discCacheSize(50 1024 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的*URI名称用MD5 **加密 .tasksProcessingOrder(QueueProcessingType.LIFO)


//缓存策略的顺序
.discCacheFileCount(100) //*缓存的文件数量 * .discCache(new UnlimitedDiscCache(cacheDir))*//自定义缓存路径 * .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) .imageDownloader(new BaseImageDownloader(context, 5 1000, 30 1000)) *// connectTimeout (5 s), readTimeout (30 s)超时时间 .writeDebugLogs() // Remove for release app .build();//开始构建

ImageLoader.getInstance().init(config);//初始化并配置

*
在需要加载图片的地方实例化:


protected ImageLoader imageLoader = ImageLoader.getInstance();


//注意内不是单例的实现


根据需要对加载图片时需要的参数进行具体的配置


DisplayImageOptions options;options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_launcher) //*设置下载过程中的默认图片*



.showImageForEmptyUri(R.drawable.ic_launcher)//设置URL为空时的默认图片*


.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.Options decodingOptions)//设置图片的解码配置 ** .delayBeforeLoading(int delayInMillis)//int delayInMillis为你设置的下载前的延迟时间**//设置图片加入缓存前,对bitmap进行设置 ** .preProcessor(BitmapProcessor preProcessor) ** .resetViewBeforeLoading(*true)*//重复设置图片时使用 ** .displayer(*new RoundedBitmapDisplayer(20))*//是否设置为圆角,弧度为多少 轻易不要使用 会创建新的ARGB_8888格式的Bitmap对象* .displayer(new FadeInBitmapDisplayer(100))//*是否图片加载好后渐入的动画时间 * .build();*//构建完成 *

在需要的房直接使用给控件设置图片 并且可以设置监听


    imageLoader.displayImage(imageUrl, imageView, options, **new **ImageLoadingListener() {    @Override    **public void **onLoadingStarted() {        *//开始执行加载的时候回调

*



} @Override *public void onLoadingFailed(FailReason failReason) { *//加载失败的时候回调* } @Override public void onLoadingComplete(Bitmap loadedImage) { *//加载完成的时候回调* } @Override public void onLoadingCancelled() { *//加载取消的时候回调 ** },*new ImageLoadingProgressListener() { @Override public void onProgressUpdate(String imageUri, View view, int current, int total) { *//记载过程中的进度信息* } });

注意:


      上面给出的是通过网络加载的情况,都是传入一个url

值。其他的几种加载数据的来源情况:


  String **imageUri **= **"/2014th7cj/d/file/p/20170104/ordv2uw4zni"**; *// **从网络** ****      *String **imageUri **= **"file:///mnt/sdcard/image.png"**; *// **从**SD卡

* String imageUri = "content://media/external/audio/albumart/13"; *// 从内容提供者* String imageUri = "assets://image.png"; *// 从AEESRT目录下面
** String *imageUri = "drawable://" + R.drawable.image; *//从*drawable资源目录下面


          对于图片大小的确定的话是根据控件的大小确定的
利用new WeakMemoryCache()替换.cacheInMemory();threadPoolSize数量减少;Bitmap.config.RGB_565代替ARGB_8888降低图片质量来减少内存消耗;通过以上的方式来降低OOM的可能性。



第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台