Android BitmapShader改变颜色

时间:2012-04-21 09:04:22

标签: android bitmap shader

我需要帮助我想要实现的目标。我在我的应用程序中使用BitmapShader在画布上绘图。我正在将自定义png文件设置为我的绘制变量的着色器,我想更改着色器的颜色。

以下是我正在使用的示例代码:

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.particle_point);
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    mPaint.setShader(shader);
    ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );
    mPaint.setColorFilter(filter);

我发现我可以使用以下方法更改颜色:

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

,但我需要通过使用自定义颜色选择器来更改颜色,颜色选择器返回与此类似的颜色代码:-234423123

那么有什么方法可以使用这个颜色代码并将其设置为我的绘制变量的颜色。

提前致谢!

3 个答案:

答案 0 :(得分:3)

您要转换为十六进制的颜色为:FFFFFFFFF206FCAD。所以你需要摆脱8个领先的Fs:

int color = -234423123;//0xFFFFFFFFF206FCAD
int myColor = 0x00000000FFFFFFFF & color;

myColor应该没问题。

答案 1 :(得分:1)

只是为Moss的答案添加一些细节。他建议您可以使用myColor作为所需的值,并为着色器设置正确的值,您必须将myColor添加到LightingColorFilter,如下所示:

ColorFilter filter = new LightingColorFilter(myColor , myColor );

它应该有用。

答案 2 :(得分:0)

获取十六进制字符串:

"#"+Integer.toHexString(n));

但是你的颜色选择器只返回颜色的int值,这应该足以使用了!

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

只需将代表颜色的值更改为你的colorpicker返回的int ...(在它前面没有0x)......

如果我错了,这应该可以正常工作!