package skin.support.design.widget; import android.content.Context; import android.content.res.TypedArray; import android.support.design.widget.FloatingActionButton; import android.util.AttributeSet; import skin.support.content.res.SkinCompatResources; import skin.support.design.R; 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 pengfengwang on 2017/3/1. */ public class SkinMaterialFloatingActionButton extends FloatingActionButton implements SkinCompatSupportable { private int mRippleColorResId = INVALID_ID; private int mBackgroundTintResId = INVALID_ID; private SkinCompatImageHelper mImageHelper; private boolean mSkinSupport = true; public SkinMaterialFloatingActionButton(Context context) { this(context, null); } public SkinMaterialFloatingActionButton(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SkinMaterialFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FloatingActionButton, defStyleAttr, R.style.Widget_Design_FloatingActionButton); mBackgroundTintResId = a.getResourceId(R.styleable.FloatingActionButton_backgroundTint, INVALID_ID); mRippleColorResId = a.getResourceId(R.styleable.FloatingActionButton_rippleColor, INVALID_ID); a.recycle(); applyBackgroundTintResource(); applyRippleColorResource(); mImageHelper = new SkinCompatImageHelper(this); mImageHelper.loadFromAttributes(attrs, defStyleAttr); } private void applyBackgroundTintResource() { mBackgroundTintResId = SkinCompatHelper.checkResourceId(mBackgroundTintResId); if (mBackgroundTintResId != INVALID_ID) { setBackgroundTintList(SkinCompatResources.getInstance().getColorStateList(mBackgroundTintResId)); } } private void applyRippleColorResource() { mRippleColorResId = SkinCompatHelper.checkResourceId(mRippleColorResId); if (mRippleColorResId != INVALID_ID) { setRippleColor(SkinCompatResources.getInstance().getColor(mRippleColorResId)); } } @Override public void applySkin() { applyBackgroundTintResource(); applyRippleColorResource(); if (mImageHelper != null) { mImageHelper.applySkin(); } } }