Есть ли onImageChangedListener() в ImageView?
Мне нужно событие, когда изображение будет изменено из ImageView.
Есть ли onImageChangedListener() в ImageView?
Мне нужно событие, когда изображение будет изменено из ImageView.
Проверьте код изображения в grepcode. Вы не знаете, когда оно будет изменено или перерисовано. Это связано с тем, что после того, как вы установили setImageDrawable(), изображение будет недействительным. В это время изображение НЕ ИЗМЕНИТЬ правильно, пока не вызывается ondraw.
В любом случае, почему вы хотите знать onimagechangedlistener?
В Android нет прослушивателя по умолчанию.. но мы можем создать диспетчер обмена изображениями.. скопируйте класс и вместо использования ImageView используйте MyImageView..
public class MyImageView extends ImageView {
private OnImageChangeListiner onImageChangeListiner;
public MyImageView(Context context) {
super(context);
}
public MyImageView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public void setImageChangeListiner(
OnImageChangeListiner onImageChangeListiner) {
this.onImageChangeListiner = onImageChangeListiner;
}
@Override
public void setBackgroundResource(int resid) {
super.setBackgroundResource(resid);
if (onImageChangeListiner != null)
onImageChangeListiner.imageChangedinView(this);
}
@Override
public void setBackgroundDrawable(Drawable background) {
super.setBackgroundDrawable(background);
if (onImageChangeListiner != null)
onImageChangeListiner.imageChangedinView(this);
}
public static interface OnImageChangeListiner {
public void imageChangedinView(ImageView mImageView);
}
}
Если вы хотите загрузить изображение из сети и проверить изменение в представлении изображения, вы можете использовать imageView.isAttachedToWindow(). Я попытался загрузить изображение из сети и отключил индикатор прогресса после загрузки и прикрепления изображения к окну. Используйте
if(imageView.isAttachedToWindow()){
//your code here
}
Чтобы узнать, когда изображение установлено в представлении, вы можете сделать это
image.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
override fun onViewDetachedFromWindow(v: View?) {
//
}
override fun onViewAttachedToWindow(v: View?) {
// do here
}
})