13

ImageView 上有 onImageChangedListener() 吗?

当图像从 ImageView 更改时,我需要该事件。

4

3 回答 3

24

Android 中没有默认侦听器 .. 但我们可以创建 imagechange 侦听器 .. 复制该类,而不是使用 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);
        }
    }
于 2012-11-29T09:16:21.327 回答
4

检查 grepcode 中的 imageview 代码。你不知道它什么时候被改变或重绘。这是因为在你 setImageDrawable() 之后,imageview 会失效。此时,在调用 ondraw 之前,图像不会正确更改。

反正为什么要知道onimagechangedlistener?

于 2012-11-29T09:33:14.437 回答
1

如果你想从网络加载图像并检查 imageview 的变化,你可以使用 imageView.isAttachedToWindow()。我尝试从网络下载图像并在图像下载并附加到窗口后禁用进度条。采用,

         if(imageView.isAttachedToWindow()){ 
            //your code here
          }
于 2017-02-22T07:43:44.037 回答