我需要通过从服务器下载ImageSwitcher来设置图像。但是通用图像加载器似乎将ImageView作为参数。
我读到我们可以使用ImageAware在任何Android视图上显示图像。
有人可以帮我解决这个问题吗?
谢谢, 斯纳
答案 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));
}