Android Int值得颜色怎么转换成颜色过滤器的矩阵呢?

在自定义View  用 paint绘制的时候,如果要添加颜色过滤器怎么添加,下面介绍一种方法,使用

ColorMatrixColorFilter
在设置ColorMatrixColorFilter的时候,需要传入一个颜色的矩阵colorMatrix,
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));

举证一般是5*4的矩阵,如下

float[] colorMatrix = {
        0, 0, 0, 0, 0,
        0, 0, 0, 0, 0,
        0, 0, 0, 0, 0,
        0, 0, 0, 1f, 0f,
};

但是,如果我要设置指定颜色值的矩阵,如和转换,例如颜色Int颜色值

如果是Int颜色的color,需要剥离除红,绿,蓝

int red = (color & 0xff0000) >> 16;
int green = (color & 0x00ff00) >> 8;
int blue = (color & 0x0000ff);

然受带入以上的矩阵,记得一定要 除以 255,这个是中众合取色的算法,

colorMatrix[0] = red/255f;
colorMatrix[6] = green/255f;
colorMatrix[12] = blue/255f;

然后设置过滤器

paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));

搞定!


版权声明:本文为puyaCheer原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。