package com.ximsfei.dynamicskindemo.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.util.AttributeSet;
import com.ximsfei.dynamicskindemo.R;
import skin.support.content.res.SkinCompatResources;
import skin.support.widget.SkinCompatHelper;
import skin.support.widget.SkinCompatImageHelper;
import skin.support.widget.SkinCompatSupportable;
import static skin.support.widget.SkinCompatHelper.INVALID_ID;
/**
* Created by ximsfei on 2017/1/17.
*/
public class CustomCircleImageView extends CircleImageView implements SkinCompatSupportable {
private final SkinCompatImageHelper mImageHelper;
private int mFillColorResId = INVALID_ID;
private int mBorderColorResId = INVALID_ID;
public CustomCircleImageView(Context context) {
this(context, null);
}
public CustomCircleImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomCircleImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mImageHelper = new SkinCompatImageHelper(this);
mImageHelper.loadFromAttributes(attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0);
mBorderColorResId = a.getResourceId(R.styleable.CircleImageView_civ_border_color, INVALID_ID);
mFillColorResId = a.getResourceId(R.styleable.CircleImageView_civ_fill_color, INVALID_ID);
a.recycle();
applySkin();
}
@Override
public void setImageResource(@DrawableRes int resId) {
super.setImageResource(resId);
if (mImageHelper != null) {
mImageHelper.applySkin();
}
}
@Override
public void setBorderColorResource(@ColorRes int borderColorRes) {
super.setBorderColorResource(borderColorRes);
mBorderColorResId = borderColorRes;
applySkin();
}
@Override
public void setFillColorResource(@ColorRes int fillColorRes) {
super.setFillColorResource(fillColorRes);
mFillColorResId = fillColorRes;
applySkin();
}
@Override
public void applySkin() {
if (mImageHelper != null) {
mImageHelper.applySkin();
}
mBorderColorResId = SkinCompatHelper.checkResourceId(mBorderColorResId);
if (mBorderColorResId != INVALID_ID) {
int color = SkinCompatResources.getInstance().getColor(mBorderColorResId);
setBorderColor(color);
}
mFillColorResId = SkinCompatHelper.checkResourceId(mFillColorResId);
if (mFillColorResId != INVALID_ID) {
int color = SkinCompatResources.getInstance().getColor(mFillColorResId);
setFillColor(color);
}
}
}