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!

  • Bibliothèque FFT dans Android Sdk
  • Version Android Construire une défaillance en raison de rétrécirReleaseMultiDexComponents
  • Site mobile Facebook Connexion à l'aide de l'application Facebook pour les détails de connexion
  • Nested Fragments - IllegalStateException "Impossible d'effectuer cette action après onSaveInstanceState"
  • Choisissez un numéro et un nom dans la liste des contacts dans l'application Android
  • Impossible d'écrire sur une carte SD - canWrite renvoie faussement
  • 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.