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

2022-08-31 11:17:32

如果我在Java中有一个int用作Android颜色(用于在画布上绘图),我如何操作该int的alpha组件?例如,如何使用操作来执行此操作:

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

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


答案 1

查看颜色类。

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

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

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

@ColorInt
public static int adjustAlpha(@ColorInt 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 类比自己执行位操作更具自我记录性,而且它已经为您完成了。


答案 2

在 android-support-v4 中使用 ColorUtils#setAlphaComponent


推荐