Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通用图像加载程序-如何将第二个图像加载到ImageView中?_Android_Universal Image Loader - Fatal编程技术网

Android 通用图像加载程序-如何将第二个图像加载到ImageView中?

Android 通用图像加载程序-如何将第二个图像加载到ImageView中?,android,universal-image-loader,Android,Universal Image Loader,我尝试使用UIL加载低分辨率图像,然后在准备好后加载高分辨率版本。我遇到的问题是,只有第一次调用imageView.setImageBitmap(位图);正在被处决。高分辨率图像永远不会放入图像视图中 我使用的是1.8.6版,对engine.cancelDisplayTaskFor(imageView)的调用似乎取消了后续请求;在DisplayBitmapTask中。我的代码有什么问题?如何避免取消后续的displayImage()请求 此时,UIL的逻辑如下:首先执行回调onload comp

我尝试使用UIL加载低分辨率图像,然后在准备好后加载高分辨率版本。我遇到的问题是,只有第一次调用imageView.setImageBitmap(位图);正在被处决。高分辨率图像永远不会放入图像视图中

我使用的是1.8.6版,对engine.cancelDisplayTaskFor(imageView)的调用似乎取消了后续请求;在DisplayBitmapTask中。我的代码有什么问题?如何避免取消后续的displayImage()请求


此时,UIL的逻辑如下:首先执行回调
onload complete(…)
,然后将当前
Imageview
的任务标记为已取消。因此,您的第二个全尺寸图像任务被取消

您只能通过更改UIL的源来解决此问题。将它们复制到您的项目中,或将UIL:project添加为Android库依赖项。 然后交换
DisplayBitmapTask
类中的两行74和75。即。 替换


simplebitmadisplayer
simplebitmadisplayer2
完全相同。有没有计划将其包含在官方源代码中?我想可以在下一版本中。让我想想。
public static DisplayImageOptions.Builder getDefaultDisplayImageOptions() {
    return new DisplayImageOptions.Builder()
            .imageScaleType(ImageScaleType.EXACTLY)
            .bitmapConfig(Bitmap.Config.RGB_565) // Will be overridden by decodingOptions()
            .cacheInMemory(true)
            .cacheOnDisc(true)
            .displayer(new SimpleBitmapDisplayer()); // default
}

public static void displayImageWithPlaceholder(final ImageView imageView, final String imageUrl, final String previewImageUrl) {
    DisplayImageOptions.Builder builder = getDefaultDisplayImageOptions();
    DisplayImageOptions displayImageOptions = builder.displayer(new SimpleBitmapDisplayer2()).build();

    ImageLoader.getInstance().displayImage(
            previewImageUrl,
            imageView,
            displayImageOptions,
            new SimpleImageLoadingListener() {

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    // Turn off cache in memory for this call getting the larger images.
                    // It will still be cached on disk if possible.
                    DisplayImageOptions.Builder builder = getDefaultDisplayImageOptions();
                    DisplayImageOptions displayImageOptions = builder.cacheInMemory(false).displayer(new SimpleBitmapDisplayer2()).build();
                    ImageLoader.getInstance().displayImage(imageUrl, imageView, displayImageOptions, new SimpleImageLoadingListener() {});
                }
            }
    );
}

private static class SimpleBitmapDisplayer2 implements BitmapDisplayer {
    @Override
    public Bitmap display(Bitmap bitmap, ImageView imageView, LoadedFrom loadedFrom) {
        imageView.setImageBitmap(bitmap);
        return bitmap;
    }
}
listener.onLoadingComplete(imageUri, imageView, displayedBitmap);
engine.cancelDisplayTaskFor(imageView);
engine.cancelDisplayTaskFor(imageView);
listener.onLoadingComplete(imageUri, imageView, displayedBitmap);