Ressources Android et internationalisation

guide-de-base-programmation-android-5

Les moyen ils font partie intégrante d'une application Android. Lorsque cela est possible nous allons les séparer du code, de cette manière, nous obtiendrons une application plus maintenable. Si nous les organisons bien, Android se chargera également de choisir le bon élément pour nous en fonction de la configuration - généralement, de la taille de l'écran et de la langue de l'utilisateur.

Ressources de base: images et textes

Les textes ils doivent toujours être séparés du code. Sinon, cela nous coûtera plus cher de maintenir le code: nous devrons revoir toutes les occurrences et nous pourrions en oublier à chaque fois que nous devrons apporter des modifications. Le pire de tout est qu'alors notre application ne sera pas internationalisable.

Par conséquent, il n'est pas recommandé de mettre des textes dans le code. La seule exception peut être les messages non destinés à l'utilisateur final, tels que les messages de sortie de la console. Mais en général, tous nos textes devront aller à un fichier de ressources séparé. Nous appellerons ce fichier strings.xml, et votre chemin complet dans le projet sera res / values ​​/ strings.xml.

Un fichier strings.xml aura un contenu similaire à celui-ci:

<ressources>un magnifique nom = "chaîne_1">texte 1
    <un magnifique nom = "chaîne_2">texte 2

Maintenant, dans notre code, nous pouvons récupérer ces textes avec des phrases comme getResources (). GetString (R.string.string_1), ou dans nos mises en page comme @ string / string_1. De cette façon, nous avons réalisé ce que nous voulions: le code devient indépendant des ressources.

L'autre ressource que nous utiliserons régulièrement sera la imagerie. Pour cela, nous avons plusieurs dossiers dans le projet, tels que res / drawable, res / drawable-hdpi, res / drawable-xhdpi, etc.

Les suffixes qui suivent "drawable" font référence au densité d'écran. Chaque appareil Android a une densité de pixels par écran qui est regroupée en plusieurs groupes:

  • ldpi (petit, x0,75)
  • mdpi (moyenne x1)
  • hdpi (grand x1,5)
  • xhdpi (très grand x2)
  • xxhdpi (très très grand x3)

De cette manière, la même image peut être adaptée à différentes densités d'écran sans apparition de difformités. Il est recommandé que dans chaque dossier il y ait une copie de l'image, en respectant les proportions (en prenant mdpi comme base et égal à 1), bien que vous ne puissiez également utiliser qu'un seul d'entre eux, puis Android effectuera automatiquement une opération de redimensionnement pour le autres résolutions. Cependant, il est recommandé de couvrir tous les dossiers pour sauver le système de cet effort supplémentaire.

Le dossier "drawable" ne contiendra pas d'images, nous l'utilisons uniquement pour les définitions xml d'éléments avancés, comme les sélecteurs.

D'autre resources:

Dans le répertoire / res du projet peuvent aller beaucoup plus de ressources. Sons, définitions de couleurs utilisables de manière similaire aux textes, dimensions pour notre application, styles pour nos vues, et bien plus encore.

Pour ceux qui souhaitent en savoir plus sur ces ressources, vous pouvez consulter la documentation officielle Android.

Internationalisation sur Android

Avec les images, nous avons déjà fait une introduction à système de ressources alternatif sur Android: si nous avons un écran de densité xhdpi (celui d'un Galaxy S3, par exemple), Android préférera les images du répertoire drawable-xhdpi aux autres.

Ce système permet de distinguer de nombreuses autres configurations: orientation normale ou paysage, conduite ou mode normal, mode nuit ou normal ... Encore une fois, nous vous recommandons la documentation officielle Android pour connaître tous les détails. Nous avons déjà parlé de la façon de fournir des images en fonction de la densité de l'écran, nous allons maintenant nous concentrer sur une autre utilisation très importante pour notre application: le internationalisation.

Si nous voulons que nos textes soient disponibles en plusieurs langues, nous devrons ajouter un dossier différent pour chaque copie du fichier strings.xml. Ainsi, si nous voulons porter notre application en anglais et en français, nous aurions ces trois répertoires:

  • res / values ​​(valeurs par défaut)
  • res / values-en
  • res / values-fr

Autrement dit, un suffixe avec le code ISO de la langue spécifique est ajouté au dossier, et nous laisserons les textes par défaut dans le dossier sans suffixe. Ce dernier est très important, car sauf avec les densités de l'écran, il faut toujours donner un Valeur par défaut pour toutes les ressources. Lorsque nous avons besoin d'une ressource de n'importe quel type, Android cherchera celle qui correspond le mieux, et s'il n'en trouve pas, nous pouvons trouver des fermetures inattendues de l'application. C'est pourquoi il doit toujours y avoir une langue que nous choisissons par défaut, et que toutes les ressources ont leur valeur par défaut.

De cette façon, nous obtenons à nouveau ce que nous voulions: en plus d'avoir séparé les textes du code, nous pouvons maintenant avoir le application dans différentes langues sans toucher du tout à notre code.

Le système de génération de ressources alternatives est, bien entendu, combinable. En suivant le lien que nous avons indiqué précédemment, nous verrons dans quel ordre les suffixes doivent être placés. Si nous suivons l'exemple simple que nous indiquons dans ce tutoriel, nous pourrions penser à avoir des images qui ne sont que pour la version anglaise. Ceci est réalisé en créant un dossier res / drawable-en-xhdpi, ou toute autre densité d'écran dont nous avons besoin. De cette façon, nous pouvons fournir une grande variété de ressources sans avoir à nous soucier de choisir la bonne. Bien sûr: sans oublier que la densité de l'écran est le seul modificateur qui n'a pas besoin de valeurs par défaut. Tous les autres ont besoin d'une valeur par défaut ou nous risquons de planter l'application.


Ça t'intéresse:
Comment supprimer les virus sur Android
Suivez-nous sur Google Actualités

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Blog Actualidad
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.