package com.bootstrap.drawable; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.LightingColorFilter; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable; public final class TintedNinePatchDrawable extends Drawable { private int tint; private int alpha; private NinePatchDrawable innerDrawable; @SuppressWarnings("deprecation") public TintedNinePatchDrawable(final Resources res, final int resId, final int tint) { this.tint = tint; this.alpha = Color.alpha(tint); this.innerDrawable = (NinePatchDrawable) res.getDrawable(resId); } public void setTint(final int tint) { this.tint = tint; this.alpha = Color.alpha(tint); } @Override public void draw(final Canvas canvas) { final Paint paint = innerDrawable.getPaint(); if (paint.getColorFilter() == null) { paint.setColorFilter(new LightingColorFilter(tint, 0)); paint.setAlpha(alpha); } innerDrawable.draw(canvas); } @Override protected void onBoundsChange(final Rect bounds) { super.onBoundsChange(bounds); innerDrawable.setBounds(bounds); } @Override public int getOpacity() { return 0; } @Override public void setAlpha(final int alpha) { // not used } @Override public void setColorFilter(final ColorFilter cf) { // not used } }