一个方法教你代码中动态修改图片颜色


在项目开发中,可能会碰到需要根据状态显示不同颜色的指示图标,遇到这种需求,一般的处理,就是让设计根据已有的状态生成不同颜色的切图。 但是这种解决方案并不灵活,万一碰到状态增加或者配色方案的修改,可能又需要重新切图。 这里附上一个在代码中动态去替换图标颜色的方案。

public static Bitmap getAlphaBitmap(Bitmap mBitmap,int mColor) {
    Bitmap mAlphaBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas mCanvas = new Canvas(mAlphaBitmap);
    Paint mPaint = new Paint();
    mPaint.setColor(mColor);
    //从原位图中提取只包含alpha的位图
    Bitmap alphaBitmap = mBitmap.extractAlpha();
    //在画布上(mAlphaBitmap)绘制alpha位图
    mCanvas.drawBitmap(alphaBitmap, 0, 0, mPaint);
    return mAlphaBitmap;
}

提示: 这种方案只适合纯色或者色彩方案单一的图标,复杂图案并不适用