package com.v7lin.android.env.widget; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; import android.widget.ImageView; import com.v7lin.android.env.EnvCallback; /** * * * @author v7lin Email:v7lin@qq.com */ @SuppressWarnings("deprecation") public class CompatImageView extends ImageView implements XImageViewCall, EnvCallback { private static final boolean ALLOW_SYSRES = false; private EnvUIChanger<ImageView, XImageViewCall> mEnvUIChanger; public CompatImageView(Context context) { this(context, null); } public CompatImageView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CompatImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mEnvUIChanger = new EnvImageViewChanger<ImageView, XImageViewCall>(context); mEnvUIChanger.applyStyle(context, attrs, defStyle, 0, ALLOW_SYSRES, isInEditMode()); } @Override public void setImageResource(int resId) { super.setImageResource(resId); applyAttrSrc(resId); } @Override public void setImageDrawable(Drawable drawable) { super.setImageDrawable(drawable); applyAttrSrc(0); } @Override public void setImageBitmap(Bitmap bm) { super.setImageBitmap(bm); applyAttrSrc(0); } private void applyAttrSrc(int resid) { applyAttr(getContext(), android.R.attr.src, resid); } @Override public void setBackgroundColor(int color) { super.setBackgroundColor(color); applyAttrBackground(0); } @Override public void setBackgroundResource(int resid) { super.setBackgroundResource(resid); applyAttrBackground(resid); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void setBackground(Drawable background) { super.setBackground(background); applyAttrBackground(0); } @Override public void setBackgroundDrawable(Drawable background) { super.setBackgroundDrawable(background); applyAttrBackground(0); } private void applyAttrBackground(int resid) { applyAttr(getContext(), android.R.attr.background, resid); } private void applyAttr(Context context, int attr, int resid) { if (mEnvUIChanger != null) { mEnvUIChanger.applyAttr(context, attr, resid, ALLOW_SYSRES, isInEditMode()); } } @Override public void scheduleImageDrawable(Drawable drawable) { super.setImageDrawable(drawable); } @Override public void scheduleBackgroundDrawable(Drawable background) { super.setBackgroundDrawable(background); } @Override public void scheduleSkin() { if (mEnvUIChanger != null) { mEnvUIChanger.scheduleSkin(this, this, isInEditMode()); } } @Override public void scheduleFont() { if (mEnvUIChanger != null) { mEnvUIChanger.scheduleFont(this, this, isInEditMode()); } } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (mEnvUIChanger != null) { mEnvUIChanger.scheduleSkin(this, this, isInEditMode()); mEnvUIChanger.scheduleFont(this, this, isInEditMode()); } } }