如何使用R.Color使用可变ID读取颜色



i具有以下颜色,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"))

但是上面的代码向我显示错误" 类型颜色的预期资源"。

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]);
}

您也可以使用它

最新更新