/** * {@inheritDoc} */ @Override public void setTintList(@Nullable ColorStateList tint) { mTintList = tint; if (updateTintFilter()) { invalidateSelf(); } }
/** * {@inheritDoc} */ @Override public void draw(Canvas canvas) { Rect bounds = getBounds(); if (bounds.width() == 0 || bounds.height() == 0) { return; } int saveCount = canvas.save(); canvas.translate(bounds.left, bounds.top); onDraw(canvas, bounds.width(), bounds.height()); canvas.restoreToCount(saveCount); }
/** * {@inheritDoc} */ @Override public void setAlpha(int alpha) { if (mAlpha != alpha) { mAlpha = alpha; invalidateSelf(); } }
@Override protected boolean onStateChange(int[] state) { return updateTintFilter(); }
/** * {@inheritDoc} */ @Override public void setTint(@ColorInt int tintColor) { setTintList(ColorStateList.valueOf(tintColor)); }
private boolean updateTintFilter() { if (mTintList == null || mTintMode == null) { boolean hadTintFilter = mTintFilter != null; mTintFilter = null; return hadTintFilter; } int tintColor = mTintList.getColorForState(getState(), Color.TRANSPARENT); // They made PorterDuffColorFilter.setColor() and setMode() @hide. mTintFilter = new PorterDuffColorFilter(tintColor, mTintMode); return true; }
/** * {@inheritDoc} */ @Override public void setColorFilter(@Nullable ColorFilter colorFilter) { mColorFilter = colorFilter; invalidateSelf(); }
/** * {@inheritDoc} */ @Override public void setTintMode(@NonNull PorterDuff.Mode tintMode) { mTintMode = tintMode; if (updateTintFilter()) { invalidateSelf(); } }