如何在Android上使用访问颜色和渐变?
所以我有一个在android中使用小数颜色的问题。如何在Android上使用访问颜色和渐变?
我从外部数据库获取颜色代码。
例如:
- 16777215白色
- 16711680是红色
现在我想用这个颜色来创建GradientDrawable。
int color = myDbReader.getColor(); //returns the decimal color code
new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[] {color, 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 });
感谢您的帮助!
您应该阅读约android colours。
Android颜色是32位无符号整数,没有签名!
另外Android的颜色也在使用Alpha位,请阅读文章,并且解决方案将会清晰。
即使SO是非常好的信息来源,您应该先询问它,然后才能在Google上输入“color android”时的第一个链接。
顺便说一句,我不是一个android开发人员。
感谢您的建议! (并纠正标题)。我已经尝试在android devlopers部分找到解决方案,但我无法找到转换我的颜色代码的方法。也许我只是想念那里的东西! – soulcinder
Android颜色是ARGB单位,所以你的颜色实际上应该由4个字节组成,其中1个是alpha值。为了转换,你可以有这样的事情
0xFF000000 & yourColor
,将你的颜色的不透明度设置为100%(阿尔法字节设置)。另一种选择是在将整数转换为十六进制字符串后使用Color.parseColor
。也不要用一些魔术常数来引用颜色。 Color类的静态字段的设计使您不必这样做。
你是否在代码中的某个地方调用drawable.setBounds()?这个调用对于android中的每个drawable都是必需的。 – Dalmas
@LadaRaider - 实际上并不需要它。 – asenovm