Coder Social home page Coder Social logo

fan-image-loader's Introduction

Fan-Image-Loader 致敬universal-image-loader的作者和glide的作者

*此框架基于universal-image-loader源码,做了更深层次的封装和修改,相对于原来的封装,使用更简单,样式更丰富, 相比较原来的universal-image-loader,做了如下改进:
####1.支持类似Glide的功能,即针对同一个url,缓存不同尺寸的图片,根据视图大小选择加载对应尺寸的缓存图片(以空间换时间) ####2.修改了图片缓存到sd卡的缓存策略,利用ConcurrentLinkedQueue缓存异步任务,更加合理(详见CustomDiskCache),原来是加载图片的过程当中,获取到图片stream,然后生成bitmap,bitmap保存到本地之后,再将bitmap返回进行显示,这样就会造成时间浪费,现修改了bitmap保存到本地的key缓存到ConcurrentLinkedQueue当中,启动一个专门的子线程来轮询ConcurrentLinkedQueue,并通过轮询得到的key从MemoryCache中获取bitmap,保存) ####3.利用builder模式,扩展性更强 ####4.支持15种视图显示样式和效果 ####5.支持listView\scrollView\RecyclerView滑动时暂停图片加载,滑动停止时继续加载(原来的universal-image-loader1.9.5有bug,不支持)
####6.使用:
#####第一步、在Application或者SplashActivity当中初始化

FanImageLoader.init(context.getApplicationContext(), FileUtil.getPathByType(FileUtil.DIR_TYPE_CACHE));
L.writeDebugLogs(DebugUtil.isDebug());

#####第二步、在需要显示图片的地方调用(详见下面的示例) #####第三步、(可选)在程序退出的时候,调用 FanImageLoader.destroy();

        //示例0 、背景淡出,图片淡入
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_DEFAULT)
                .into(mIs);
        /* 示例一、普通加载图片*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_DEFAULT)
                .into(mIv1);
        FanImageLoader.create("assets://xiada01.jpg")
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_DEFAULT)
                .into(mIv2);
        /* 示例二、渐变显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_FADE_IN)
                .setFadeInTime(1000)
                .into(mIv2);
        /* 示例三、圆角矩形显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setRoundRadius(30)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND)
                .into(mIv3);
        /* 示例四、圆角矩形淡入显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setRoundRadius(30)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND_FADE_IN)
                .setFadeInTime(1000)
                .into(mIv4);
        /* 示例五、圆角矩形LOMO显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setRoundRadius(30)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND_VIGNETTE)
                .into(mIv5);
        /* 示例六、圆角矩形LOMO淡入显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setRoundRadius(30)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND_VIGNETTE_FADE_IN)
                .setFadeInTime(1000)
                .into(mIv6);
        /* 示例七、圆形显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_CIRCLE)
                .into(mIv7);
        /* 示例八、圆形淡入显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setDisplayType(FanImageLoader.DISPLAY_CIRCLE_FADE_IN)
                .setFadeInTime(1000)
                .into(mIv8);

        /* 示例九、带环的圆形图片*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setStrokeWidth(5.f)
                .setRingColor(0xff00ff00)
                .setRingPadding(3.f)
                .setDisplayType(FanImageLoader.DISPLAY_CIRCLE_RING)
                .into(mIv9);
        /* 示例十、模糊图片显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setBlurDepth(20)
                .setDisplayType(FanImageLoader.DISPLAY_BLUR)
                .into(mIv10);
        /* 示例十一、模糊图片显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setBlurDepth(20)
                .setFadeInTime(1000)
                .setDisplayType(FanImageLoader.DISPLAY_BLUR_FADE_IN)
                .into(mIv11);
        /* 示例十二、模糊图片显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setBlurDepth(20)
                .setRoundRadius(20)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND_BLUR)
                .into(mIv12);
        /* 示例十三、模糊图片显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setBlurDepth(20)
                .setRoundRadius(20)
                .setDisplayType(FanImageLoader.DISPLAY_ROUND_BLUR_VIGNETTE)
                .into(mIv13);
        /* 示例十四、模糊图片显示*/
        FanImageLoader.create(url)
                .setImageScaleType(ImageScaleType.EXACTLY)
                .setDefaultRes(R.drawable.ic_launcher)
                .setFailRes(R.drawable.ic_launcher)
                .setEmptyRes(R.drawable.ic_launcher)
                .setBlurDepth(20)
                .setDisplayType(FanImageLoader.DISPLAY_CIRCLE_BLUR)
                .into(mIv14);

欢迎技术交流,详见[我的博客](http://blog.csdn.net/fandong12388 "技术交流")

fan-image-loader's People

Contributors

fandong12388 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.