您好我正在构建我正在使用通用图像加载器的小型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.我错过了什么吗? 需要一些帮助。谢谢。
答案 0 :(得分:1)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.imageDownloader(new BaseImageLoaderCustom())
...
.build();
ImageLoader.getInstance().init(config);
来自Nostra的
答案 1 :(得分:1)
我得到了答案。我把它看成BaseImageLoader,它正在做以下事情:
ContentLengthInputStream(new BufferedInputStream(entity.getContent(), BUFFER_SIZE), (int)entity.getContentLength());
工作正常。