操纵Java / Android颜色int的alpha字节

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

如果我使用Java中的int作为Android颜色(用于在Canvas上绘图),那么如何操作该int的alpha分量?例如,我怎样才能使用一个操作来做到这一点:

int myOpaqueColor = 0xFFFFFF;
float factor = 0;
int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor);
//myTransparentColor should now = 0x00FFFFFF;

理想情况下,最好将这些第一个字节乘以任何factor值,而不是将字节设置为静态值。

提问于
用户回答回答于

查看Color类。

你的代码看起来有点像这样。

int color = 0xFFFFFFFF;
int transparent = Color.argb(0, Color.red(color), Color.green(color), Color.blue(color));

因此,将其包装在一个方法中可能如下所示:

public int adjustAlpha(int color, float factor) {
    int alpha = Math.round(Color.alpha(color) * factor);
    int red = Color.red(color);
    int green = Color.green(color);
    int blue = Color.blue(color);
    return Color.argb(alpha, red, green, blue);
}

然后调用它来设置透明度,比方说,50%:

int halfTransparentColor = adjustAlpha(0xFFFFFFFF, 0.5f);

我认为使用提供的Color类有点更多自我记录,只是自己进行位操作,再加上它已经为您完成了。

用户回答回答于

扫码关注云+社区