package com.qmusic.controls.graphy;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.drawable.BitmapDrawable;
public class IconDrawable extends BitmapDrawable {
static final String TAG = IconDrawable.class.getSimpleName();
Paint paint;
int rgb;
PorterDuffXfermode xfermode;
public IconDrawable(Resources resource, int resId, int rgb) {
super(resource, BitmapFactory.decodeResource(resource, resId));
init();
this.rgb = rgb;
}
public IconDrawable(Resources resource, String filePath) {
super(resource, filePath);
init();
}
public IconDrawable(Resources resources, Bitmap bitmap) {
super(resources, bitmap);
init();
}
private void init() {
xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
paint = new Paint();
}
public void setColor(int rgb) {
this.rgb = rgb;
invalidateSelf();
}
@Override
public void draw(Canvas canvas) {
int sc = canvas.saveLayer(0, 0, canvas.getWidth(), canvas.getHeight(), null, Canvas.MATRIX_SAVE_FLAG
| Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG
| Canvas.CLIP_TO_LAYER_SAVE_FLAG);
canvas.drawColor(rgb);
paint.setXfermode(xfermode);
canvas.drawBitmap(getBitmap(), 0, 0, paint);
paint.setXfermode(null);
canvas.restoreToCount(sc);
}
}