Android 中的颜色值也遵循RGB/ARGB 标准,基本介绍网上资料很多。
我们可以对一个图片(Drawable类型) 或者 控件的背景, 设置背景颜色, 颜色值中包含透明度,例如 0xfb020202.
前面两位 fb (十六进制)即代表 透明度 ( 00表示完全透明, ff 表示完全不透明, 80 表是半透明 )。
现有一个需求:
有时我们获取了一个颜色值, 例如是半透明的颜色值 0x8020202, 我们想把它改成完全不透明 或者 完全透明。
简单的方法可以自己对这个颜色值 做 位与运算 ,但是这容易出错。
因此介绍SDK 中已有的API,可以准确又方便对一个颜色值进行透明度的设置。
1. ColorUtils.setAlphaComponent(color, alpha)
通过 graphics包里的 ColorUtils, 可以对任意一个color颜色值,设置透明度alpha( alpha必须在 [0,255] 之间)。
返回值即为新的color 值 (int 类型)
package androidx.core.graphics;
public final class ColorUtils {
@ColorInt
public static int setAlphaComponent(@ColorInt int color, @IntRange(from = 0L,to = 255L) int alpha) {
if (alpha >= 0 && alpha <= 255) {
return color & 16777215 | alpha << 24;
} else {
throw new IllegalArgumentException("alpha must be between 0 and 255.");
}
}
}
例如设置为 半透明,
int newColorValue = ColorUtils.setAlphaComponent(colorValue, 128);
设置为完全不透明:
int newColorValue = ColorUtils.setAlphaComponent(colorValue, 255);