74 votes

Comment puis-je enregistrer des couleurs dans array.xml et les récupérer dans le tableau Color[]

Comment puis-je enregistrer les valeurs de couleur dans array.xml et les récupérer dans mon code en tant que tableau Color [] ?

Merci d'avance !

174voto

Sky Kelsey Points 3405

Définissez vos ressources de couleur, puis ajoutez-les à un tableau pour y accéder.

 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="bright_pink">#FF007F</color>
    <color name="red">#FF0000</color>
    <color name="orange">#FF7F00</color>
    <color name="yellow">#FFFF00</color>
    <color name="chartreuse">#7FFF00</color>
    <color name="green">#00FF00</color>
    <color name="spring_green">#00FF7F</color>
    <color name="cyan">#00FFFF</color>
    <color name="azure">#007FFF</color>
    <color name="blue">#0000FF</color>
    <color name="violet">#7F00FF</color>
    <color name="magenta">#FF00FF</color>

    <array name="rainbow">
        <item>@color/bright_pink</item>
        <item>@color/red</item>
        <item>@color/orange</item>
        <item>@color/yellow</item>
        <item>@color/chartreuse</item>
        <item>@color/green</item>
        <item>@color/spring_green</item>
        <item>@color/cyan</item>
        <item>@color/azure</item>
        <item>@color/blue</item>
        <item>@color/violet</item>
        <item>@color/magenta</item>
    </array>
</resources>

Ensuite, accédez-y comme ceci :

 int[] rainbow = context.getResources().getIntArray(R.array.rainbow);

for (int i = 0; i < tileColumns; i++) {
    paint.setColor(rainbow[i]);
    // Do something with the paint.
}

53voto

Patrick Points 351

S'il se trouve dans array.xml :

 <resources>
    <array name="colors">
        <item>#ffffff</item>
        <item>#000000</item>
    </array>
</resources>

Cela vous donnera les valeurs de couleur pour ce tableau :

 TypedArray ta = context.getResources().obtainTypedArray(R.array.colors);
int[] colors = new int[ta.length()];
for (int i = 0; i < ta.length(); i++) {
    colors[i] = ta.getColor(i, 0);
}
ta.recycle();

Cela développe simplement l'exemple TypedArray dans la documentation : http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray

J'espère que ça aide!

25voto

Dmytro Danylyk Points 6911

couleurs.xml

 <resources>
    <string-array name="colors">        
        <item>#ff0000</item>
        <item>#00ff00</item>  
        <item>#0000ff</item>
    </string-array>
</resources>

Code en classe d'activité.

 String[] allColors = context.getResources().getStringArray(R.array.colors);

Color.parseColor(allColors[0]) // red
Color.parseColor(allColors[1]) // green
Color.parseColor(allColors[2]) // blue

2voto

naixx Points 1023

A Kotlin ce sera beaucoup plus simple

  val colors = resources.obtainTypedArray(R.array.colors).use { ta ->
     IntArray(ta.length()) { ta.getColor(it, 0) }
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X