Need help with ImageLoaderFramework?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ladingwu
424 Stars 64 Forks 68 Commits 7 Opened issues

Description

打造统一的图片加载框架,融合Glide(4.x),Fresco,不侵入业务代码,一套API兼容两种加载库

Services available

!
?

Need anything else?

Contributors list

# 26,015
Java
Android
android...
Python
68 commits

ImageLoaderFramework

  • 打造统一的图片加载框架,融合Glide,Fresco,一套API兼容两种加载方式
  • 两个底层包Glide,Fresco可随时相互替换,而无需大幅修改业务代码

  • 图片加载模块作为手机常用的一个重要模块,我们需要保证对它有完全的控制力,以适应产品随时变化的需求,因此我们就需要整合自己的图片加载框架,将它和业务代码分离,不过分依赖哪一个包,保证必要时可以替换。

  • 具体如何打造统一加载框架请参考这两篇文章《封装并实现统一的图片加载架构》,《项目重构之路——Fresco非入侵式替换Glide

  • 使用方式: ```     // 下面两个依赖包可选,根据需求二选一即可,    compile 'com.ladingwu.library:fresco:0.0.9'    compile 'com.ladingwu.library:glide:0.0.9'    // 这个是必须的 compile "com.ladingwu.library:imageloader-framework:0.0.9"

- 初始化
    // 初始化代码需要在Application中完成。
    ImageLoaderConfig config = new ImageLoaderConfig.Builder(LoaderEnum.GLIDE,new GlideImageLocader())
            .maxMemory(40*1024*1024L)  // 配置内存缓存,单位为Byte
            .build();
    ImageLoaderManager.getInstance().init(this,config);
  • 图片加载统一调用接口
//该接口的具体实现Glide和Fresco各有不同
showImage(@NonNull ImageLoaderOptions options);

show() // 0.0.9版本之后新增的API

  • 使用范例:

> 0.0.9之后优化了调用方式 ,可一步完成图片加载(对老的API是兼容的):

    ImageLoader.createImageOptions(img2,url)
            .blurImage(true)
            .blurValue(35)
            .isCircle()
            .placeholder(R.mipmap.ic_launcher).build().show();
之前的API调用方式(新版本仍然可以用):

      // 加载圆角图片 ImageLoaderOptions op=new ImageLoaderOptions.Builder(img1,url).imageRadiusDp(12).build(); ImageLoaderManager.getInstance().showImage(op);

ImageLoaderOptions options=new ImageLoaderOptions.Builder(img2,url)                                                    .blurImage(true)   // 高斯模糊     .blurValue(35)   //高斯模糊程度                                                    .isCircle()   // 圆图                                                      .placeholder(R.mipmap.ic_launcher)// 占位图 .build();

       // 如果项目同时使用了Fresco和Glide,可以指定特定的加载框架加载图片                                       ImageLoaderManager.getInstance().showImage(options, LoaderEnum.GLIDE); // 选择通过Glide加载图片

                ```

2018-11-28 更新

  • 优化了图片加载的调用方式,通过链式API一气呵成
  • 增加了图片加载的实时加载进度回调(该功能还没经过非常详细的测试)

实时加载进度回调:

      // 0.0.9之后增加的新的API调用方式
     ImageLoader.createImageOptions(img1,url).setOnLoaderProgressCallback(new OnLoaderProgressCallback() {
                        @Override
                        public void onProgress(int progress) {
                            Log.w("progress",""+progress);
                        }
                    }).imageRadiusDp(12).build().show();

// 老的API调用方式 ImageLoaderOptions op=new ImageLoaderOptions.Builder(img1,url).setOnLoaderProgressCallback(new OnLoaderProgressCallback() { @Override public void onProgress(int progress) { Log.w("progress",""+progress); } }).imageRadiusDp(12).build(); ImageLoaderManager.getInstance().showImage(op);

2018-03-04 更新

  • 添加了对Fresco内存缓存的配置功能(Glide暂时采用默认配置)。

2018-02-01 更新

  • 添加了对于Glide4.x版本的支持
  • 添加了圆图,圆角,高斯模糊的支持,并且保证Glide和Fresco的效果大体相同

2017-8-12 更新

  • 添加图片暂停加载和恢复功能,方便优化处理
    // 暂停加载
    void pause(Context context);
    // 恢复加载
    void resume(Context context);

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.