ImageView onImageChangedListener Android

Есть ли onImageChangedListener() в ImageView?

Мне нужно событие, когда изображение будет изменено из ImageView.

Ответ 1

Проверьте код изображения в grepcode. Вы не знаете, когда оно будет изменено или перерисовано. Это связано с тем, что после того, как вы установили setImageDrawable(), изображение будет недействительным. В это время изображение НЕ ИЗМЕНИТЬ правильно, пока не вызывается ondraw.

В любом случае, почему вы хотите знать onimagechangedlistener?

Ответ 2

В 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);
        }
    }

Ответ 3

Если вы хотите загрузить изображение из сети и проверить изменение в представлении изображения, вы можете использовать imageView.isAttachedToWindow(). Я попытался загрузить изображение из сети и отключил индикатор прогресса после загрузки и прикрепления изображения к окну. Используйте

         if(imageView.isAttachedToWindow()){ 
            //your code here
          }

Ответ 4

Чтобы узнать, когда изображение установлено в представлении, вы можете сделать это

image.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {

            override fun onViewDetachedFromWindow(v: View?) {
                //
            }

            override fun onViewAttachedToWindow(v: View?) {
                // do here
            }

        })