帮助在 Java 中将颜色十六进制存储为整数

发布于 2024-10-12 09:50:36 字数 163 浏览 1 评论 0原文

我需要在 Android 应用程序中表示十六进制颜色 #F0FFF0 (存储为整数)。我将其存储为:

int color = 0xF0FFF0;

但是渲染时颜色似乎很遥远(事实上,它是黑色的)。我是否错误地存储了颜色?

I need to represent the hex color #F0FFF0 in an android application (stored as an integer). I am storing this as:

int color = 0xF0FFF0;

But the color seems way off when being rendered (in fact, it's black). Am I storing the color incorrectly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

爱人如己 2024-10-19 09:50:36

也许您还需要设置 alpha。
IE。

int color = 0xFFF0FFF0;

其中前两个 FF 表示 alpha 完全不透明。
看:
http://developer.android.com/reference/android/graphics/Color.html

Perhaps you need to set the alpha too.
ie.

int color = 0xFFF0FFF0;

where the first two FF represent the alpha as being completely opaque.
See:
http://developer.android.com/reference/android/graphics/Color.html

榆西 2024-10-19 09:50:36

Android 使用十六进制 ARGB 值,其格式为#AARRGGBB。第一对字母 AA 代表 Alpha 通道。您必须将十进制不透明度值转换为十六进制值。步骤如下:

Alpha 十六进制值处理

  1. 将不透明度作为十进制值,并将其乘以 255。因此,如果您有一个不透明度为 50% 的块,则十进制值为 0.5。例如: .5 x 255 = 127.5
  2. 该分数不会转换为十六进制,因此您必须将数字向上或向下舍入为最接近的整数。例如:127.5向上舍入为128; 55.25 向下舍入为 55。
  3. 在十进制到十六进制转换器中输入十进制值,如下所示 http://www.binaryhexconverter .com/decimal-to-hex-converter,并转换您的值
  4. 如果您只返回一个值,请在其前面加上零。例如,如果您尝试获得 5% 的不透明度,并且执行此过程,您最终会得到 D 的十六进制值。在其前面添加一个零,使其显示为 0D。

这就是找到 Alpha 通道值的方法。我冒昧地为您列出了一份价值观清单。享受!

十六进制不透明度值

  • 100% — FF
  • 95% — F2
  • 90% — E6
  • 85% — D9
  • 80% — CC
  • 75% — BF
  • 70% — B3
  • 65% — A6
  • 60% — 99
  • 55% — 8C
  • 50% — 80
  • 45% — 73
  • 40% — 66
  • 35% — 59
  • 30% — 4D
  • 25% — 40
  • 20% — 33
  • 15% — 26
  • 10% — 1A
  • 5% — 0D
  • 0% — 00

Android uses Hex ARGB values, which are formatted as #AARRGGBB. That first pair of letters, the AA, represent the Alpha Channel. You must convert your decimal opacity values to a Hexdecimal value. Here are the steps:

Alpha Hex Value Process

  1. Take your opacity as a decimal value and multiply it by 255. So, if you have a block that is 50% opaque the decimal value would be .5. For example: .5 x 255 = 127.5
  2. The fraction won't convert to hex, so you must round your number up or down to the nearest whole number. For example: 127.5 rounds up to 128; 55.25 rounds down to 55.
  3. Enter your decimal value in a decimal to hexadecimal converter, like this http://www.binaryhexconverter.com/decimal-to-hex-converter, and convert your values
  4. If you only get back a single value, prefix it with a zero. For example, if you're trying to get 5% opacity and your going through this process you'll end up with the hex value of D. Add a zero in front of it so it appears as 0D.

That's how you find the alpha channel value. I've taken the liberty to put together a list of values for you. Enjoy!

Hex Opacity Values

  • 100% — FF
  • 95% — F2
  • 90% — E6
  • 85% — D9
  • 80% — CC
  • 75% — BF
  • 70% — B3
  • 65% — A6
  • 60% — 99
  • 55% — 8C
  • 50% — 80
  • 45% — 73
  • 40% — 66
  • 35% — 59
  • 30% — 4D
  • 25% — 40
  • 20% — 33
  • 15% — 26
  • 10% — 1A
  • 5% — 0D
  • 0% — 00
久隐师 2024-10-19 09:50:36

我总是用 alpha 值指定我的颜色,即:

int color = 0xFFF0FFF0;

我不确定如果省略前导 FF 是否会是隐式的。

I've always specified my colours with the alpha value, ie:

int color = 0xFFF0FFF0;

I'm not sure if the leading FF will be implicit if it's omitted however.

恏ㄋ傷疤忘ㄋ疼 2024-10-19 09:50:36

不是你没有。

您必须添加 Alpha 通道。

对于你的例子是:

int color = 0xFFF0FFF0

我认为它有效!

Not you didn't.

You have to add Alpha channel.

For your example is :

int color = 0xFFF0FFF0

I think it works!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文