我必须在我的活动中将相同的图像设置为两个图像视图。图像从互联网上下载并通过一种方法异步设置到imageview 1,该方法将图片的网址和一个图像视图作为参数。
我可以将imageview 2的源与imageview 1同步(即,只要图像在图像1中设置,它也会将其设置为图像2)?
答案 0 :(得分:2)
您可以更改下载方法,使其接受列表或ImageView数组或varargs:download(String url, ImageView... imageViews)
更新 ImageViews
的同步可以通过子类化完成。
class MyImageView extends ImageView {
private OnImageChangedListener onImageChangedListener;
public MyImageView(Context context) {
super(context);
}
// Plus other constructors if needed
// Call to super method and do callback
// Override another method if needed
@Override
public void setImageBitmap(Bitmap bitmap) {
super(bitmap);
if (onImageChangedListener != null) {
onImageChangedListener.onImageChanged(bitmap);
}
}
public setOnImageChangedListener(OnImageChangedListener listener) {
this.onImageChangedListener = listener;
}
public interface OnImageChangedListener() {
public void onImageChanged(Bitmap bitmap);
}
}
设置监听器:
MyImageView imageView1 = ...
imageView1.setOnImageChangedListener(new OnImageChangedListener() {
@Override
public void onImageChanged(Bitmap bitmap) {
imageView2.setImageBitmap(bitmap);
}
});
download(url, imageView1);