Android 中UniverImageLoader的属性及使用

本文介绍了一个自定义的ImageLoaderManager类实现,用于管理和优化图片加载过程。该类使用单例模式,配置了线程池、缓存策略及图片加载选项等,确保应用程序高效加载和显示图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class ImageLoaderManager {
private static final int THREAD_COUNT=4;//开启线程的数量
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 ImageLoaderManager mInstance = null;
private static ImageLoader mLoader = null;

//获取ImageLoaderManager 的单例模式
public static ImageLoaderManager getInstance(Context context) {
    if (mInstance == null) {
        synchronized (ImageLoaderManager.class) {
            if (mInstance == null) {
                mInstance = new ImageLoaderManager(context);
            }
        }
    }
    return mInstance;
}

//构造私有方法 在创建ImageLoaderManager 的时候,就配置好相关的设置
private ImageLoaderManager(Context context) {
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
            .threadPoolSize(THREAD_COUNT)//设置线程的数量
            .threadPriority(Thread.NORM_PRIORITY-PRIORITY)//设置优先级
            .denyCacheImageMultipleSizesInMemory()//设置加载的图片只有一种格式,默认时多种格式
            .memoryCache(new WeakMemoryCache())//设置弱引用,当内存不足时,会回收图片
            .diskCacheSize(DISK_CACHE_SIZE)// 设置硬盘的缓存大小
            //将保存的时候的URI名称用MD5加密 设置硬盘缓存文件名生成规范
            .diskCacheFileNameGenerator(new Md5FileNameGenerator())
            // 设置图片加载和显示队列处理的类型 默认为QueueProcessingType.FIFO
            // 注:如果设置了taskExecutor或者taskExecutorForCachedImages 此设置无效
            .tasksProcessingOrder(QueueProcessingType.LIFO)
            //设置图片默认的显示选项
            .defaultDisplayImageOptions(getDefaultOptions())
            // 设置图片下载器
            // 默认为 DefaultConfigurationFactory.createBitmapDisplayer()
            .imageDownloader(new BaseImageDownloader(context,CONNECTION_TIME_OUT,READ_TIME_OUT))
           //打印DebugLogs
            .writeDebugLogs()
            .build();
    ImageLoader.getInstance().init(config);
    mLoader = ImageLoader.getInstance();
}


/**
 * 默认的图片显示Options ,可设置图片的缓存策略,编解码方式等,非常重要
 * @return
 */
private DisplayImageOptions getDefaultOptions() {
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.default_user_avatar)//当URL为空时显示的图片
            .showImageOnFail(R.drawable.default_user_avatar)//当图片加载失败时,显示的图片
            .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;
    //还可以设置其他的相关的属性
    // 设置图片加载时的默认图片
    // .showImageOnLoading(R.drawable.ic_chat_def_pic)
    // 设置延迟部分时间才开始加载  默认为0
    // .delayBeforeLoading(100)
    // 设置添加到内存缓存
    // 默认为false
    // 设置选项的图像解码
    // .decodingOptions(new Options())
    // 设置自定义显示器
    // 默认为DefaultConfigurationFactory.createBitmapDisplayer()
    // .displayer(new FadeInBitmapDisplayer(300))
    // 设置自定义的handler
    // 默认为new Handler()
    // .handler(new Handler())

}

//加载图片,并且显示到imageview中
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);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值