如何使用通用图像加载器将图像设置为ImageView以外的其他视图?

时间:2014-11-13 10:24:06

标签: android universal-image-loader imageswitcher

我需要通过从服务器下载ImageSwitcher来设置图像。但是通用图像加载器似乎将ImageView作为参数。

我读到我们可以使用ImageAware在任何Android视图上显示图像。

有人可以帮我解决这个问题吗?

谢谢, 斯纳

3 个答案:

答案 0 :(得分:1)

请改用loadImage。这将为您提供一个位图,您可以使用它来随心所欲地做任何事情。

// Load image, decode it to Bitmap and return Bitmap to callback
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        // Do whatever you want with Bitmap
    }
});

答案 1 :(得分:0)

您还可以使用ImageAware界面包装视图。然后你可以将这个包装器传递给displayImage(...)方法。

您可以查看ImageViewAware以了解它如何包裹ImageView。所以你可以用同样的方式包装任何视图。

答案 2 :(得分:0)

您可以检查Loader显示 ImageAware 的图像

代码displayImage(String,ImageView)在

之下
public void displayImage(String uri, ImageView imageView) {
    this.displayImage(uri, (ImageAware)(new ImageViewAware(imageView)), (DisplayImageOptions)null, (ImageLoadingListener)null, (ImageLoadingProgressListener)null);
}

ImageAware 扩展了抽象类 ViewAware ,这里有两个重要的方法

protected abstract void setImageDrawableInto(Drawable var1, View var2);

protected abstract void setImageBitmapInto(Bitmap var1, View var2);

通过 ImageAware

检查两个方法实现
protected void setImageDrawableInto(Drawable drawable, View view) {
    ((ImageView)view).setImageDrawable(drawable);
    if(drawable instanceof AnimationDrawable) {
        ((AnimationDrawable)drawable).start();
    }

}

protected void setImageBitmapInto(Bitmap bitmap, View view) {
    ((ImageView)view).setImageBitmap(bitmap);
}

所以你可以看到 ImageView 使用 setImageBitmap 来显示位图,而另一个视图将使用 setBackground ,这里是我的类其他观点

public class CustomViewAware extends ViewAware {
public CustomViewAware(View view) {
    super(view);
}

@Override
protected void setImageDrawableInto(Drawable drawable, View view) {
    view.setBackgroundDrawable(drawable);
}

@Override
protected void setImageBitmapInto(Bitmap bitmap, View view) {
    view.setBackgroundDrawable(new BitmapDrawable(bitmap));
}