Recursos alternatius
Com hem vist, amb els recursos es pretén aïllar el desenvolupador de l'elecció del recurs adequat. Amb aquests recursos definits fora del codi es pretén aconseguir diferenciar entre textos en diferents idiomes, o diferents densitats de les pantalles.
Els recursos alternatius al recurs per defecte es defineixen amb noms de directoris alternatius, que es formen amb la formula:
<resources_name>(_<config_qualifier>)+
En què resources_name correspon al tipus de recurs, que pot ser qualsevol dels vistos anteriorment, i config_qualifier serveix per a determinar una configuració diferent. Es pot definir més d'un config_qualifier, tots separats pel caràcter guió baix (_).
Exemple
Si tenim un fitxer icon.png, podem tenir el recurs per defecte a res/drawable/icon.png, mentre que la versió anglesa la tindrem a res/drawable_en/icon.png.
L'Android suporta diversos qualificadors de configuració. A continuació mostrem algunes de les opcions més interessants:
- Operador i nació. Serveix per a identificar l'operador que ens dóna la cobertura. Es pot identificar només al codi de nació o nació i operador. Per exemple, mcc310 o mcc310-mnc004.
- Idioma i regió. Els idiomes amb dos possibles components separats per un guió. Primer l'idioma (segons ISO639-1) i després es defineix la regió (precedit de r i després el codi ISO3166-1-alpha-2). Per exemple, fr-rFR, fr-rCA.
- Mida de la pantalla: es defineixen quatre tipus: small, normal, large i xlarge.
- Orientació de la pantalla: defineix l'orientació actual, i així tenim dues opcions:
- port per a orientació de retrat o vertical, i
- land per a orientació de paisatge o horitzontal.
- Mode nit: per a indicar si som en hora de dia o de nit, útil, per exemple, per a colors. Tenim dues opcions, night i notnight.
- Densitat de la pantalla (dpi): Defineix diverses opcions segons la densitat de la pantalla en nombre de píxels possibles. Per exemple:
- ldpi: 120 dpi.
- hpdi: 240 dpi.
- xhdpi: 320 dpi.
- Mode d'entrada de text primari: indica el tipus de teclat de què es disposa; així podem tenir:
- nokeys: no es disposa de teclat físic.
- qwery: es disposa d'un teclat complet.
- 12key: el dispositiu disposa d'un teclat de dotze tecles.
L'ordre dels qualificadors és important, segons estan definits en la llista anterior, i amb més detall en la referència oficial de l'Android.
Els noms no són sensibles a majúscules i minúscules, i no es poden repetir els diversos valors per a un mateix qualificat.
Cada vegada que es demana un nou recurs, en temps d'execució i per mitjà per exemple de la classe R, l'Android fa la cerca amb els valors de les configuracions actuals i les opcions disponibles en el directori res.
Perquè l'Android pugui escollir el recurs adequat utilitza un algoritme d'eliminació d'opcions disponibles, agafant cadascuna de les configuracions actuals i eliminant les que contradiuen la configuració fins que només queda una opció.
Per a poder evitar problemes de recursos no trobats, sempre és una bona pràctica donar un valor per defecte per al recurs a la carpeta i fitxer per defecte, que és on mirarà l'Android en cas de no trobar el recurs.

