所以我在android中使用十进制颜色时遇到了问题。
我从外部数据库获取颜色代码。
例如:
现在我想使用这些颜色来创建GradientDrawable。
int color = myDbReader.getColor(); //returns the decimal color code
new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {color, 0 });
代码示例始终生成一个完整的白色渐变对象。
我试图谷歌如何以正确的方式转换十进制颜色..但我没有找到任何东西。
任何人都可以给我一个如何正确使用十进制颜色的提示吗?
答案 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 });
感谢你的帮助!