package com.tv.ui.metro.view; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; import java.util.ArrayList; /** * */ public class CenterIconImage extends ImageView { private Object mSyncObj = new Object(); private ArrayList<ImageChangedListener> mImageChangedListeners = new ArrayList<ImageChangedListener>(4); public CenterIconImage(Context context) { this(context, null, 0); } public CenterIconImage(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CenterIconImage(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setOnImageChangedListener(ImageChangedListener listener){ addImageChangedListener(listener); } public void addImageChangedListener(ImageChangedListener listener){ synchronized(mSyncObj){ if(!mImageChangedListeners.contains(listener)){ mImageChangedListeners.add(listener); } } } @Override public void setImageBitmap(Bitmap resId) { super.setImageBitmap(resId); notifyListener(); } @Override public void setImageResource(int resId) { super.setImageResource(resId); //notifyListener(); } @Override public void setImageDrawable(Drawable drawable) { super.setImageDrawable(drawable); //notifyListener(); } //因为该函数方法最终也是调用到setImageDrawable // @Override // public void setImageBitmap(Bitmap bm) private void notifyListener() { if(mSyncObj != null){ synchronized (mSyncObj) { for(ImageChangedListener listener : mImageChangedListeners){ if(listener != null){ listener.onImageChanged(this); } } } } } }