Comment puis-je enregistrer des couleurs dans array.xml et revenir à la matrice de couleurs

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

Merci d'avance!

  • Android :: Comment changer le thème d'un autre programme par programme
  • Le fichier de magasin de clés par défaut n'existe pas?
  • Enregistrer le fichier dans la mémoire interne de stockage Android
  • Erreur de codage du projet Android Studio
  • Parsing JSON chaîne dans Android
  • Faire fonctionner un service Python Android en cours de suspension
  • 4 Solutions collect form web for “Comment puis-je enregistrer des couleurs dans array.xml et revenir à la matrice de couleurs”

    Définissez vos ressources de couleur, puis ajoutez-les à un tableau pour l'accès.

    <?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> 

    Puis, 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. } 

    Si ceci est 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 se traduit par l'exemple TypedArray dans les documents: http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray

    J'espère que cela aide!

    Colors.xml

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

    Code dans la 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 

    Je ne peux pas poster de commentaire, alors je dois mettre cela en réponse. Je suis entièrement d'accord avec le choix de conception de Sky Kelsey avec le type de ressource de couleur. Cependant, j'ai trouvé que la méthode proposée pour y accéder ne fonctionnait pas. C'est la façon dont j'ai implémenté l'utilisation d'un réseau XML pour passer facilement à une liste de couleurs et appliquer les couleurs à diverses vues (personnalisées).

    D'abord le tableau dans arrays.xml:

      <array name="ingr_color_arr"> <item>@color/ingr_red1</item> <item>@color/ingr_orange1</item> <item>@color/ingr_yellow1</item> <item>@color/ingr_green1</item> <item>@color/ingr_blue1</item> <item>@color/ingr_violet1</item> <item>@color/ingr_red2</item> <item>@color/ingr_orange2</item> <item>@color/ingr_yellow2</item> <item>@color/ingr_green2</item> <item>@color/ingr_blue2</item> <item>@color/ingr_violet2</item> </array> 

    Ensuite, dans color.xml:

     <color name="ingr_red1">#FFCC0000</color> <color name="ingr_orange1">#FFED5F21</color> <color name="ingr_yellow1">#FFFAE300</color> <color name="ingr_green1">#FF5B9C0A</color> <color name="ingr_blue1">#FF0A0D9C</color> <color name="ingr_violet1">#FF990A9C</color> <color name="ingr_red2">#FFFFCCCC</color> <color name="ingr_orange2">#FFFFEACC</color> <color name="ingr_yellow2">#FFFFFECC</color> <color name="ingr_green2">#FFC7F5C4</color> <color name="ingr_blue2">#FFC4DAF4</color> <color name="ingr_violet2">#FFE1C4F4</color> 

    Ensuite, pour l'utiliser:

     TypedArray ta = res.obtainTypedArray(R.array.ingr_color_arr); int colorToUse = ta.getResourceId(intGroupNum.intValue() - 1, R.color.recipe_detail_border); paint.setColor(colorToUse); 

    La clé ici est d'utiliser getResourceId car setColor (int) va s'attendre à un identifiant de ressource pour une couleur. J'avais des erreurs "Resource not found" lorsque j'ai essayé d'obtenir la valeur avec getIntArray() ou getColor() .

    La réponse la plus populaire peut fonctionner … Je ne l'ai pas essayé parce que j'ai préféré mieux le choix de design «tableau de couleurs».

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.