博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 universalimageloader 缓存图片的配置类及使用方法
阅读量:6242 次
发布时间:2019-06-22

本文共 4547 字,大约阅读时间需要 15 分钟。

0、gradle 配置

 

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.1' compile 'com.squareup.okhttp3:okhttp:3.3.0' //okttp依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' }

 

一、配置类

/** * @author: qndroid * @function: 初始化UniverImageLoader, 并用来加载网络图片 * @date: 16/6/27 */public class ImageLoaderUtil {    private static final int THREAD_COUNT = 2;    private static final int PRIORITY = 2;    private static final int MEMORY_CACHE_SIZE = 2 * 1024 * 1024;    private static final int DISK_CACHE_SIZE = 50 * 1024 * 1024;    private static final int CONNECTION_TIME_OUT = 5 * 1000;    private static final int READ_TIME_OUT = 30 * 1000;    private static ImageLoaderUtil mInstance = null;    private static ImageLoader mLoader = null;    public static ImageLoaderUtil getInstance(Context context) {        if (mInstance == null) {            synchronized (ImageLoaderUtil.class) {                if (mInstance == null) {                    mInstance = new ImageLoaderUtil(context);                }            }        }        return mInstance;    }    /**     * 私有构造方法完成初始化工作     *     * @param context     */    private ImageLoaderUtil(Context context) {        ImageLoaderConfiguration config = new ImageLoaderConfiguration                .Builder(context)                .threadPoolSize(THREAD_COUNT)                .threadPriority(Thread.NORM_PRIORITY - PRIORITY)                .denyCacheImageMultipleSizesInMemory()                //.memoryCache(new UsingFreqLimitedMemoryCache(MEMORY_CACHE_SIZE))                .memoryCache(new WeakMemoryCache())                .diskCacheSize(DISK_CACHE_SIZE)                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密                .tasksProcessingOrder(QueueProcessingType.LIFO)                .defaultDisplayImageOptions(getDefaultOptions())                .imageDownloader(new BaseImageDownloader(context, CONNECTION_TIME_OUT, READ_TIME_OUT))                .writeDebugLogs()                .build();        ImageLoader.getInstance().init(config);        mLoader = ImageLoader.getInstance();    }    //load the image    public void displayImage(ImageView imageView, String path,                             ImageLoadingListener listener, DisplayImageOptions options) {        if (mLoader != null) {            mLoader.displayImage(path, imageView, options, listener);        }    }    //load the image    public void displayImage(ImageView imageView, String path, ImageLoadingListener listener) {        if (mLoader != null) {            mLoader.displayImage(path, imageView, listener);        }    }    public void displayImage(ImageView imageView, String path) {        displayImage(imageView, path, null);    }    /**     * 默认的图片显示Options,可设置图片的缓存策略,编解码方式等,非常重要     *     * @return     */    private DisplayImageOptions getDefaultOptions() {        DisplayImageOptions options = new                DisplayImageOptions.Builder()                .cacheInMemory(true)//设置下载的图片是否缓存在内存中, 重要,否则图片不会缓存到内存中                .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中, 重要,否则图片不会缓存到硬盘中                .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//                .decodingOptions(new BitmapFactory.Options())//设置图片的解码配置                .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位                .build();        return options;    }    public DisplayImageOptions getOptionsWithNoCache() {        DisplayImageOptions options = new                DisplayImageOptions.Builder()                //.cacheInMemory(true)//设置下载的图片是否缓存在内存中, 重要,否则图片不会缓存到内存中                //.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中, 重要,否则图片不会缓存到硬盘中                .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//                .decodingOptions(new BitmapFactory.Options())//设置图片的解码配置                .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位                .displayer(new FadeInBitmapDisplayer(400))                .build();        return options;    }}

  

二、使用方法

   // 声明

private ImageLoaderUtil mImageLoader; //传入 context 实例化
mImageLoader = ImageLoaderUtil.getInstance(mContext); //显示图片 第一个参数为 imageview 第二个参数为远程的url mImageLoader.displayImage(mImageViews[i], mHeaderValue.middle.get(i));

转载地址:http://thsia.baihongyu.com/

你可能感兴趣的文章
Visual Studio 2012 Update 2 (KB2707250)
查看>>
MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
查看>>
Android 封装http请求的工具类
查看>>
黑书上的DP例题
查看>>
每天一个新标签/方法/属性/兼容性/问题
查看>>
《Linux内核设计与实现》读书笔记(九)- 内核同步介绍
查看>>
Delphi-IOCP 共同学习研究群号 320641073
查看>>
sql2008中已存在已有数据表修改主键为自增不让更改的解决方案
查看>>
控件路径自定义控件遇到的两个小问题
查看>>
【BZOJ】2648: SJY摆棋子 & 2716: [Violet 3]天使玩偶(kdtree)
查看>>
数据仓库与数据挖掘的一些基本概念
查看>>
Android学习系列(23)--App主界面实现
查看>>
jquery validate的漂亮css样式验证
查看>>
OAF_解决OAF与Windows版本不兼容黑屏
查看>>
如何让编码更加的标准
查看>>
阿里云收集服务器性能指标的python脚本
查看>>
Docker源码分析(一):Docker架构
查看>>
Android开发之在子线程中使用Toast
查看>>
(第三天)函数
查看>>
Git 学习笔记--Git下的冲突解决
查看>>