我在color.xml中定义了以下颜色。颜色名称为BC1,BC2,BC2等。定义了15种这样的颜色名称。最后一种颜色是BC15。
<color name="BC1">#39DD02</color>
<color name="BC2">#FEA200</color>
<color name="BC3">#21C3F3</color>
........
<color name="BC15">#21F3F3</color>
在我的代码中,我尝试使用以下代码获取颜色:
ContextCompat.getColor(getContext(), R.color.BC1)
上面的代码工作正常。现在,我想在循环中使用这个代码,以便我可以根据计数器值选择颜色,这样我就可以逐个读取颜色,如下面的psedo代码。
for(colorID=1;colorID<=15;colorID++)
{
int businessColor=ContextCompat.getColor(getContext(),R.color.<colorID> )
//Do something with the value inside businessColor
}
在上面的代码中,我如何使用colorID计数器逐个读取颜色
我试着写下面的内容。 (假设我可以从数组中获得十六进制值)
ContextCompat.getColor(getContext(), Color.parseColor("#636161"))
但上面的代码显示错误&#34; 预期的颜色类型资源&#34;。
答案 0 :(得分:1)
1.定义您的色彩资源
2.将它们添加到数组
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="yellow">#FFFF00</color>
<color name="fuchsia">#FF00FF</color>
<color name="red">#FF0000</color>
<color name="silver">#C0C0C0</color>
<array name="array_name">
<item>@color/white</item>
<item>@color/yellow</item>
<item>@color/fuchsia</item>
<item>@color/red</item>
<item>@color/silver</item>
</array>
</resources>
int[] colorArray= context.getResources().getIntArray(R.array.array_name);
for (int i = 0; i < numberOfColumns; i++) {
paint.setColor(colorArray[i]);
}
您也可以使用this