ImageLoader

原创 2016年05月30日 21:57:14

ImageLoader的下载

前言:关于ImageLoader的配置,网上有好多配置方案,本文是基于github上ImageLoader的官方引导作为讲解。
github地址 https://github.com/nostra13/Android-Universal-Image-Loader

ImageLoader工具类的提取

  • 为了简化使用,本文将对ImageLoader提取出一个工具类,来进行配置,方便大家的使用
<code class="language-bash hljs  has-numbering">package com.example.demo;

import android.content.Context;
import android.graphics.Bitmap;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;

public class ImageLoaderUtils {
    /**
     * 初始化ImageLoaderConfiguration 这个可以只做简单的初始化,此方法建议在
     * Application中进行初始化
     * 
     * @param context
     */
    public static void initConfiguration(Context context) {

        Builder configuration = new ImageLoaderConfiguration.Builder(context);

//--------------------------------------------------------------------
//    本段代码,如果是测试使用时,可以不添加,不影响ImageLoader的正常使用
//      configuration.memoryCacheExtraOptions(<span class="hljs-number">480</span>, <span class="hljs-number">800</span>)
//      // default = device screen dimensions
//      // 缓存到磁盘中的图片宽高
//              .diskCacheExtraOptions(<span class="hljs-number">480</span>, <span class="hljs-number">800</span>, null)
//              // .taskExecutor(null)
//              // .taskExecutorForCachedImages()
//              .threadPoolSize(<span class="hljs-number">3</span>)
//              // default 线程优先级
//              .threadPriority(Thread.NORM_PRIORITY - <span class="hljs-number">2</span>)
//              // default
//              .tasksProcessingOrder(QueueProcessingType.FIFO)
//              // // default设置在内存中缓存图像的多种尺寸
//              // 加载同一URL图片时,imageView从小变大时,从内存缓存中加载
//              .denyCacheImageMultipleSizesInMemory()
//              // 超过设定的缓存大小时,内存缓存的清除机制
//              .memoryCache(new LruMemoryCache(<span class="hljs-number">2</span> * <span class="hljs-number">1024</span> * <span class="hljs-number">1024</span>))
//              // 内存的一个大小
//              .memoryCacheSize(<span class="hljs-number">2</span> * <span class="hljs-number">1024</span> * <span class="hljs-number">1024</span>).memoryCacheSizePercentage(<span class="hljs-number">13</span>)
//              // default 将图片信息缓存到该路径下
//              // default 磁盘缓存的大小
//              .diskCacheSize(<span class="hljs-number">50</span> * <span class="hljs-number">1024</span> * <span class="hljs-number">1024</span>)
//              // 磁盘缓存文件的个数
//              .diskCacheFileCount(<span class="hljs-number">100</span>)
//              // 磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new
//              // Md5FileNameGenerator()源文件的名称同过md5加密后保存
//              .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
//              // 设置默认的图片加载
//              // 使用默认的图片解析器
//              .imageDecoder(new BaseImageDecoder(<span class="hljs-literal">true</span>)) // default
//              .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) 
//              .writeDebugLogs();

//---------------------------------------------------------------------
        ImageLoader.getInstance().init(configuration.build());
    }
    /**
     * 初始化DisplayImageOptions
     * @param context
     * @<span class="hljs-keyword">return</span>
     */
    public static DisplayImageOptions <span class="hljs-function"><span class="hljs-title">initOptions</span></span>() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
        // 设置图片在下载期间显示的图片
                .showImageOnLoading(R.drawable.ic_launcher)
                // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.drawable.ic_launcher)
                // 设置下载的图片是否缓存在内存中
                .cacheInMemory(<span class="hljs-literal">true</span>)
                // 设置下载的图片是否缓存在SD卡中
                .cacheOnDisc(<span class="hljs-literal">true</span>)


//--------------------------------------------------------------------
//如果您只想简单使用ImageLoader这块也可以不用配置
                 // 是否考虑JPEG图像EXIF参数(旋转,翻转)
                .considerExifParams(<span class="hljs-literal">true</span>)
                // 设置图片以如何的编码方式显示
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                // 设置图片的解码类型//
                .bitmapConfig(Bitmap.Config.RGB_565)
                // 设置图片的解码配置
                // .decodingOptions(options)
                // .delayBeforeLoading(int delayInMillis)//int
                // delayInMillis为你设置的下载前的延迟时间
                // 设置图片加入缓存前,对bitmap进行设置
                // .preProcessor(BitmapProcessor preProcessor)
                // 设置图片在下载前是否重置,复位
                .resetViewBeforeLoading(<span class="hljs-literal">true</span>)
                // 是否设置为圆角,弧度为多少
                .displayer(new RoundedBitmapDisplayer(<span class="hljs-number">20</span>))
                // 是否图片加载好后渐入的动画时间
                .displayer(new FadeInBitmapDisplayer(<span class="hljs-number">100</span>))
                // 构建完成             
//-------------------------------------------------------------------

                .build();
        <span class="hljs-keyword">return</span> options;
    }</code>

工具类的使用

关于调用,注意一下事项:

  • 建议在Application中调用initConfiguration方法
<code class="language-bash hljs  has-numbering">public class MyApplication extends Application {

    @Override
    public void <span class="hljs-function"><span class="hljs-title">onCreate</span></span>() {
        super.onCreate();
        ImageLoaderUtils.initConfiguration(getApplicationContext());
    }
}
</code>
  • 配置Application,在清单文件中的Application节点下,配置name属性
<code class="language-bash hljs  has-numbering">android:name=<span class="hljs-string">"com.example.demo.MyApplication"</span></code>
  • 在要使用ImageLoader的类中调用initOption的方法
<code class="language-bash hljs  has-numbering">//将options转成成员变量
options = ImageLoaderUtils.initOptions();</code>
  • 当使用ImageLoader时,就用如下方法
<code class="language-bash hljs  has-numbering">@Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ImageView imageView = new ImageView(MainActivity.this);
                ImageLoader.getInstance().displayImage(
                        imagethumburls[position], imageView, options);
                <span class="hljs-keyword">return</span> imageView;
            }</code>
  • 配置权限
<code class="language-bash hljs  has-numbering">     <uses-permission android:name=<span class="hljs-string">"android.permission.INTERNET"</span>/>
     <uses-permission android:name=<span class="hljs-string">"android.permission.WRITE_EXTERNAL_STORAGE"</span>/> <uses-permission android:name=<span class="hljs-string">"android.permission.READ_EXTERNAL_STORAGE"</span>/></code>

清除缓存的方法

//完全退出程序时,可以不调用
ImageLoader.getInstance().clearDiskCache();//清除磁盘缓存
ImageLoader.getInstance().clearMemoryCache();//清除内存缓存

ImageLoader_demo02

  • 2017年12月05日 14:19
  • 2KB
  • 下载

ImageLoader加载数据

  • 2013年10月16日 10:34
  • 27KB
  • 下载

使用AndroidStudio分析和解决ImageLoader引起内存泄露问题

这篇博文主要介绍使用AndroidStudio对内存进行分析和跟踪,还有就是从源码角度解决ImageLoader引起的OOM问题。...

ImageLoader

  • 2013年09月27日 15:04
  • 238KB
  • 下载

ImageLoader

  • 2013年07月08日 14:33
  • 482KB
  • 下载

Android 使用imageLoader来加载显示图片

每天早晨醒来的第一件事是: 问一下自己 今天 的目标是什么。。。。

ImageLoader类库

  • 2015年10月20日 20:00
  • 439KB
  • 下载

【转】【第三方包】【Android Universal Imageloader】关于displayImage方法中URI参数的问题

最近做项目用到了一个第三方包Android Universal Imageloader,这个包用来做图片异步加载相当方便缓存也做得挺不错的,但是实际用起来却会出现不少小问题。其实也不是小问题,只是这个...

ImageLoader的代码实现和一个例子

  • 2016年01月07日 17:30
  • 7.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ImageLoader
举报原因:
原因补充:

(最多只允许输入30个字)