安卓中的整数颜色代码是如何工作的?

6

我有以下问题:

我有一个列表视图,我想为该列表视图的项目分隔符(分割线)分配渐变颜色。我正在使用以下代码:

    list = (ListView) findViewById(R.id.list);
    int[] colors = { 0, 0xffffff00, 0 }; 
    list.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
    list.setDividerHeight(4);

我查找了颜色代码(0xffffff00)的来源:http://developer.android.com/reference/android/graphics/Color.html 问题: 然而,这个颜色是黄色的,我想要的是深金色。我也想知道如何定义我想要的颜色,目前我尝试从开发者网站上理解,但并不十分清晰。

colorpicker - CRUSADER
如何使用这些颜色值,以ff为单位?我在那部分感到困惑! - user2613996
1
正如@blackbelt所说,ff是alpha组件,更像是为了透明度而设计的,ff表示完全不透明,00表示完全透明。因此,FFC0C0C0是完全不透明的灰色,而00C0C0C0是透明的灰色。因此,请使用上述网站中提供的颜色代码,并在前面加上透明度位。 :) - CRUSADER
2个回答

8
你写的是十六进制表示法。你可以将一种颜色看做由4个部分组成:ARGB。在你的例子中,0xffffff00是这样组成的:第一个ff是alpha分量,第二个ff是红色分量,第三个ff是绿色分量,第四个00是蓝色分量。通过改变这些十六进制的数值,你可以得到不同的颜色。请使用HTML标签。
int color = Color.argb(255, 255, 175, 64);

或者使用整数转十六进制的转换器。

好的,我有一个RGB颜色: R:255 G:175 B:64如何用ff表示它? 将其转换为十六进制,并在前面添加两个“ff”:ffFFAF40。 - user2613996
太棒了!像魔法一样运行! - user2613996

2

对于金色,你需要一个比绿色更红的黄色,所以尝试使用0xffffc000。在十进制中,它将是红色255绿色192蓝色0。要真正掌握RGB系统的工作原理,请花一些时间调整数值,我认为仅仅通过阅读无法深入理解。


是的,我完全不明白ff是如何工作的,以及将RGB转换为什么值才能获得ff表示。谢谢让我试一下! - user2613996
1
你想知道如何将十进制数转换为十六进制吗?除以16:商是第一个数字,余数是第二个数字。用A、B、..代表10、11、..。由于在心算中除以16不容易,最好忘记十进制并逐渐习惯十六进制。 - Joni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接