带有自定义基本图像下载程序的Android Universal图像加载程序总是提供51200的总大小

时间:2015-08-11 07:08:38

标签: android uiimageview universal-image-loader

您好我正在构建我正在使用通用图像加载器的小型Android应用程序。我正在使用自定义下载程序类:它看起来如下:

public class CustomUniversalImageDownloader extends BaseImageDownloader {

    /**
     * Constructor
     * @param context
     */
    public CustomUniversalImageDownloader(Context context) {
        super(context);
    }

    @Override
    public InputStream getStream(String imageUri, Object extra) throws IOException {
        switch (Scheme.ofUri(imageUri)) {
            case HTTP:
            case HTTPS:
                // here is my code ...

                    return new BufferedInputStream(response.getEntity().getContent(), BUFFER_SIZE);

            case FILE:
                return getStreamFromFile(imageUri, extra);
            case CONTENT:
                return getStreamFromContent(imageUri, extra);
            case ASSETS:
                return getStreamFromAssets(imageUri, extra);
            case DRAWABLE:
                return getStreamFromDrawable(imageUri, extra);
            case UNKNOWN:
            default:
                return getStreamFromOtherSource(imageUri, extra);
        }
    }

开启显示图像我正在做以下事情:

ImageCache.loader.displayImage(url, view, ImageCache.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) {

            // here my total always coming as 512000
                            Debug.print("inside this is image loading progress "+current+"  this is total ... "+total);
                            Debug.print("inside this is image loading progress "+Math.round(100.0f * current / total));

                        }
                    }
            );
        }

因此,如果我使用默认的Base Image Downloader,那么它可以正常工作。但如果我使用自定义的那么它的图像总长度总是512000.我错过了什么吗? 需要一些帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        ...
        .imageDownloader(new BaseImageLoaderCustom())
        ...
        .build();
ImageLoader.getInstance().init(config);
来自Nostra的

How set custom downloader in Universal Image Loader?

答案 1 :(得分:1)

我得到了答案。我把它看成BaseImageLoader,它正在做以下事情:

ContentLengthInputStream(new BufferedInputStream(entity.getContent(), BUFFER_SIZE), (int)entity.getContentLength());

工作正常。