android - 以编程方式在android中获取ARGB背景颜色中的A值

标签 android alpha argb

假设我在android中将背景颜色设置为#AF000000(AARRGGBB)。 我想要十进制 (0-255) 的 alpha channel 值 (AA),即 175。

如何以编程方式实现这一点?

最佳答案

这是一个纯 Java 解决方案,不使用 Android 特定的 getAlpha() 方法。

您是否将此值存储在 Stringint 中?如果您将其放在 String 中,请首先删除 # 字符,然后将其转换为 int:

String hexString = "#05000000";
int color = Integer.parseInt(hexString.replaceAll("#", ""), 16);

然后我们需要进行一些位操作。这种十六进制颜色表示意味着(在 ARGB 模式下)您拥有值 #AARRGGBB。即每个 channel 2 个字节,包括 alpha channel 。为了仅获取 alpha channel (十六进制值的 AA 部分),我们需要“将其向右推 6 个字节”(Java 是一种 Big Endian 语言) )所以我们最终可以得到类似 #000000AA 的结果。由于每个字节由 8 位组成,因此我们必须将 alpha 值6 * 8 = 24“推”“向右” :

int alpha = color >> 24;

这个进程被称为Bit Shifting 。所有最右边的 RGB 值都被丢弃,然后我们将 alpha 值存储在一个 int 中,其十进制值在 0 到 255 之间。

编辑:如果您已经有了从 getAlpha() 返回的 alpha 值,您可以随时将其乘以 255 并对其进行取整:

int alpha = Math.floor(myView.getAlpha() * 255);

关于android - 以编程方式在android中获取ARGB背景颜色中的A值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178523/

相关文章:

android - 如何获取 https 的 InputStream,分块 Push Servlet?

android - 将应用程序移动到 SD 卡时会发生什么

android - Android中的后台传感器数据收集器

video - 使用ffmpeg将RGBA图像序列编译成两个独立的视频(RGB + Alpha)

c++ - alpha 混合后获取像素颜色

c++ - 从 uint32 或 uchar 数组创建 ARGB QImage

android - Android中的EditText输入背景

java - Paint.NET 中的图像在 Eclipse 中失败

java - TYPE_INT_RGB 和 TYPE_INT_ARGB 格式

android - Android 上的 NV21 转位图,图像非常暗、灰度还是黄色?