如何在Android上使用访问颜色和渐变?

时间:2011-11-17 15:00:27

标签: android

所以我在android中使用十进制颜色时遇到了问题。

我从外部数据库获取颜色代码。

例如:

  • 16777215是白色
  • 16711680是红色

现在我想使用这些颜色来创建GradientDrawable。

int color = myDbReader.getColor(); //returns the decimal color code
new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {color, 0 });

代码示例始终生成一个完整的白色渐变对象。

我试图谷歌如何以正确的方式转换十进制颜色..但我没有找到任何东西。

任何人都可以给我一个如何正确使用十进制颜色的提示吗?

3 个答案:

答案 0 :(得分:3)

您应该阅读android colours

Android颜色是32位无符号整数,而不是有符号整数!

Android颜色也使用Alpha位,请阅读文章,解决方案将是明确的。

即使SO是非常好的信息来源,你应该在询问之前先搜索它,这是我输入“color android”时Google上的第一个链接。

顺便说一句,我不是一个Android开发者。

答案 1 :(得分:0)

Android颜色是ARGB单位,因此您的颜色实际上应包含4个字节,其中1个用于Alpha值。为了转换你可以有这样的东西

0xFF000000 & yourColor

将颜色的不透明度设置为100%(设置字母字节)。另一种选择是在将整数转换为十六进制字符串后使用Color.parseColor。也不要通过一些魔术常数来引用颜色。 Color类的静态字段经过精心设计,因此您无需这样做。

答案 2 :(得分:0)

所以基于你昨晚花在阅读有关不同类型的颜色代码的建议,最后找到了解决方案:

给定的数字是访问颜色代码,所以我只需要:

int color = myDbReader.getColor(); //returns the decimal color code
gradient = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {Color.rgb((value/256/256)%256, (value/256)%256, value%256), 0 });

感谢你的帮助!