涂料颜色变化后,alpha值始终复位

时间:2014-03-10 17:52:35

标签: android canvas paint

我使用Paint的单个实例绘制了不同颜色的多个形状。我希望每个绘制区域的alpha值(<255)是相同的。我在初始化Paint时设置了所需的alpha值。但是,每当我使用Paint更改setColor的颜色时,我的绘画的alpha值将重置为255(完全不透明)。

以下代码演示了此问题:

myPaint.setAlpha(100);

// myPaint.getAlpha() returns 100, as expected;

myPaint.setColor(Color.DKGRAY);

// myPaint.getAlpha() now returns 255;

为什么会这样?如果我每次更改油漆颜色时被迫拨打paint.setAlpha(...),会对性能产生任何影响吗?

1 个答案:

答案 0 :(得分:1)

这是因为您使用的颜色是argb格式。请参阅PaintColor javadoc。您需要指定仅使用RGB的颜色或将颜色alpha设置为您要使用的值。如果你每次都设置alpha,那么它的性能不会太大。如果你想走那条路。

作为一个额外的例子,你可以做到

paint.setColor(new Color(100, Color.red(Color.DKGRAY), Color.green(Color.DKGRAY), Color.blue(Color.DKGRAY)));

如果您要将颜色设置为深灰色,我会说您最好使用所需的值创建颜色资源并使用它。