以编程方式获取 android 中 ARGB 背景颜色中 A 的值
Getting value of A in ARGB background color in android programmatically
假设我在 android 中将背景颜色设置为 #AF000000(AARRGGBB)。
我想要十进制 (0-255) 的 alpha 通道 (AA) 的值,这将是 175.
如何以编程方式完成?
您可以将十六进制转换为十进制只需使用,
int i= Integer.parseInt(HEX_STR,16);
或者如果你需要传递长十六进制值意味着使用 like,
public static long hexToLong(String hex) {
return Long.parseLong(hex, 16);
}
这是一个纯粹的 Java 解决方案,不使用 Android 特定的 getAlpha()
方法。
您是否将此值存储在 String
或 int
中?如果你把它放在 String
中,首先去掉 #
字符,然后将它转换为 int
:
String hexString = "#05000000";
int color = Integer.parseInt(hexString.replaceAll("#", ""), 16);
然后我们需要进行一些位操作。这种十六进制颜色表示意味着(在 ARGB 模式下)您具有值 #AARRGGBB。即每个通道 2 个字节,包括 alpha 通道。要仅获得 alpha 通道(十六进制值的 AA
部分),我们需要 "push it 6 bytes to the right"(Java 是一个 Big Endian languange) 所以我们可以得到类似 #000000AA
的结果。由于每个字节由 8 位组成,我们必须 "push" alpha 值 6 * 8 = 24
位 "to the right":
int alpha = color >> 24;
这个过程叫做Bit Shifting。所有最右边的 RGB 值都被丢弃,然后我们将 alpha 值存储在 int
中,十进制值介于 0 和 255 之间。
编辑: 如果您已经有了从 getAlpha() 返回的 alpha 值,您总是可以将它乘以 255 并将其取下:
int alpha = Math.floor(myView.getAlpha() * 255);
获取每个单独的 int 值:
int argb = Color.parseColor("#00112233");
int alpha = 0xFF & (argb >> 24);
int red = 0xFF & (argb >> 16);
int green = 0xFF & (argb >> 8);
int blue = 0xFF & (argb >> 0);
假设我在 android 中将背景颜色设置为 #AF000000(AARRGGBB)。 我想要十进制 (0-255) 的 alpha 通道 (AA) 的值,这将是 175.
如何以编程方式完成?
您可以将十六进制转换为十进制只需使用,
int i= Integer.parseInt(HEX_STR,16);
或者如果你需要传递长十六进制值意味着使用 like,
public static long hexToLong(String hex) {
return Long.parseLong(hex, 16);
}
这是一个纯粹的 Java 解决方案,不使用 Android 特定的 getAlpha()
方法。
您是否将此值存储在 String
或 int
中?如果你把它放在 String
中,首先去掉 #
字符,然后将它转换为 int
:
String hexString = "#05000000";
int color = Integer.parseInt(hexString.replaceAll("#", ""), 16);
然后我们需要进行一些位操作。这种十六进制颜色表示意味着(在 ARGB 模式下)您具有值 #AARRGGBB。即每个通道 2 个字节,包括 alpha 通道。要仅获得 alpha 通道(十六进制值的 AA
部分),我们需要 "push it 6 bytes to the right"(Java 是一个 Big Endian languange) 所以我们可以得到类似 #000000AA
的结果。由于每个字节由 8 位组成,我们必须 "push" alpha 值 6 * 8 = 24
位 "to the right":
int alpha = color >> 24;
这个过程叫做Bit Shifting。所有最右边的 RGB 值都被丢弃,然后我们将 alpha 值存储在 int
中,十进制值介于 0 和 255 之间。
编辑: 如果您已经有了从 getAlpha() 返回的 alpha 值,您总是可以将它乘以 255 并将其取下:
int alpha = Math.floor(myView.getAlpha() * 255);
获取每个单独的 int 值:
int argb = Color.parseColor("#00112233");
int alpha = 0xFF & (argb >> 24);
int red = 0xFF & (argb >> 16);
int green = 0xFF & (argb >> 8);
int blue = 0xFF & (argb >> 0);