public class MyView extends ImageView {
private float mRedFilter;
private float mGreenFilter;
private float mBlueFilter;
private float mAlphaFilter;
private ColorMatrix mColorMatrix;
private Paint mPaint;
public MyView(Context context) {
this(context, null);
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
private Bitmap drawableToBitamp(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bd = (BitmapDrawable) drawable;
return bd.getBitmap();
}
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
drawable.draw(canvas);
return bitmap;
}
private void initPaint() {
// 构建Paint时直接加上去锯齿属性
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
}
public void setArgb(float alpha, float red, float green, float blue) {
mRedFilter = red;
mGreenFilter = green;
mBlueFilter = blue;
mAlphaFilter = alpha;
mColorMatrix = new ColorMatrix(new float[]{
mRedFilter, 0, 0, 0, 0,
0, mGreenFilter, 0, 0, 0,
0, 0, mBlueFilter, 0, 0,
0, 0, 0, mAlphaFilter, 0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
if (null != getDrawable())
canvas.drawBitmap(drawableToBitamp(getDrawable()), 0, 0, mPaint);
}
}
go 点击打开链接