zoukankan      html  css  js  c++  java
  • 使用 universalimageloader 缓存图片的配置类及使用方法

    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));
  • 相关阅读:
    学习 TList 类的实现[8]
    System.SetString 获取字符串
    System.Odd 判断一个整数是不是奇数
    问与答[2008331]
    System.Val 将字符串转换为数字
    事件自调用 回复 maxcool 的问题
    JS操作select相关方法:新增 修改 删除 选中 清空 判断存在 等
    自由人生 从容生活
    [引]智能设备开发演练:创建用于设备的 Windows 窗体应用程序
    gentle做的分页控件
  • 原文地址:https://www.cnblogs.com/oftenlin/p/7223489.html
Copyright © 2011-2022 走看看