码迷,mamicode.com
首页 > 移动开发 > 详细

Android开源项目 Universal imageloader 源码研究之项目框架

时间:2015-12-29 22:43:57      阅读:424      评论:0      收藏:0      [点我收藏+]

标签:

Universal imageloader 的代码并不复杂 重点是缓存,线程池任务

 

下面都用UML图进行了绘制

 

技术分享

基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载

    public static void initImageLoader(Context context) {
        
        ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
        config.threadPriority(Thread.NORM_PRIORITY - 2);
        config.denyCacheImageMultipleSizesInMemory();
        config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
        config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
        config.tasksProcessingOrder(QueueProcessingType.LIFO);
        config.writeDebugLogs();// Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config.build());
    }

 

            options = new DisplayImageOptions.Builder()
                    .showImageOnLoading(R.drawable.ic_stub)
                    .showImageForEmptyUri(R.drawable.ic_empty)
                    .showImageOnFail(R.drawable.ic_error)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();

 

ImageLoader.getInstance()
                    .displayImage(IMAGE_URLS[0], holder.imageView, options, new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingStarted(String imageUri, View view) {
                           
                        }

                        @Override
                        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                            
                        }

                        @Override
                        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                          
                        }
                    }, new ImageLoadingProgressListener() {
                        @Override
                        public void onProgressUpdate(String imageUri, View view, int current, int total) {
                           
                        }
                    });

 

技术分享

  ImageLoader是入口,其它类包括Config和Option。 ImageLoaderEngine 为发动机,其它包括包装器,网络下载和解码

 技术分享

磁盘缓存和内存缓存,包括了几种经典的算法 实现。

技术分享

 

技术分享

  ImageLoader 回调里面没有 Bitmap数据提供 只是直接把Bitmap设置给ImageView对象

 可以通过接口处理  BitmapProcessor

 

options = new DisplayImageOptions.Builder().
                preProcessor(preProcessor).
                postProcessor(postProcessor);

    //进入缓存之前
    BitmapProcessor preProcessor = new BitmapProcessor() {

        @Override
        public Bitmap process(Bitmap bitmap) {
            return null;
        }
        
    };
    
    //显示给ImageView 之前处理
    BitmapProcessor postProcessor = new BitmapProcessor() {

        @Override
        public Bitmap process(Bitmap bitmap) {
            return null;
        }
        
    };

 

Android开源项目 Universal imageloader 源码研究之项目框架

标签:

原文地址:http://www.cnblogs.com/gaofengworking/p/5086924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!