Source code
package android.support.design.widget;
import android.content.res.ColorStateList;
import android.graphics.Canvas;
import android.graphics.Outline;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffColorFilter;
class CircularBorderDrawableLollipop extends CircularBorderDrawable {
private ColorStateList mTint;
private PorterDuffColorFilter mTintFilter;
private Mode mTintMode = Mode.SRC_IN;
CircularBorderDrawableLollipop() {
}
public void draw(Canvas canvas) {
boolean clearColorFilter;
if (this.mTintFilter == null || this.mPaint.getColorFilter() != null) {
clearColorFilter = false;
} else {
this.mPaint.setColorFilter(this.mTintFilter);
clearColorFilter = true;
}
super.draw(canvas);
if (clearColorFilter) {
this.mPaint.setColorFilter(null);
}
}
public void setTintList(ColorStateList tint) {
this.mTint = tint;
this.mTintFilter = updateTintFilter(tint, this.mTintMode);
invalidateSelf();
}
public void setTintMode(Mode tintMode) {
this.mTintMode = tintMode;
this.mTintFilter = updateTintFilter(this.mTint, tintMode);
invalidateSelf();
}
public void getOutline(Outline outline) {
copyBounds(this.mRect);
outline.setOval(this.mRect);
}
private PorterDuffColorFilter updateTintFilter(ColorStateList tint, Mode tintMode) {
if (tint == null || tintMode == null) {
return null;
}
return new PorterDuffColorFilter(tint.getColorForState(getState(), 0), tintMode);
}
}