Tous les smartphones qui voudront avoir accès à l’Android Market devront posséder le thème de base d’Android 4.0 (Ice Cream Sandwich) : Holo, Holo.Light et Holo.Light.DarkActionBar.

Depuis Android 3, Google a modifié en profondeur les codes graphiques de son son système d’exploitation. Sortie quasi-simultanément avec le film Tron, le jeu de couleurs y fait beaucoup penser, à tel point que certains y voient davantage un thème pour geeks, plutôt que pour le grand public. Des constructeurs comme Samsung ou HTC ont redéfini cette interface sur leurs tablettes pour qu’elle soit plus cohérente avec leur ligne de produits, donnant parfois des mélanges douteux.

Alors que Google laissait jusqu’à présent carte blanche aux constructeurs pour modifier à leur guise l’interface, la situation a changé depuis Ice Cream Sandwich. Sur un billet du blog officiel, on peut lire que l’accès à l’Android Market nécessite désormais que le thème Holo et sa variante Holo.Light soient intégrés sans aucune modification. Jusqu’à présent les couches constructeurs redéfinissaient les composants par défaut, ce qui donnait aux applications tierces des apparences différentes d’un terminal à l’autre. Selon l’implémentation, il pouvait y avoir des bugs, mais surtout des composants n’ayant pas toujours la même taille et pouvant interférer avec l’apparence souhaitée par le développeur.

Les applications de l’Android Market sur Android 4.0 auront donc toutes la même apparence si elles utilisent le thème Holographique quelle que soit la marque. Mais Google conserve sa souplesse, en proposant le thème DeviceDefault, qui permet aux constructeurs de pointer vers leur propre thème (HTC Sense, Samsung TouchWiz…). Le développeur pourra donc choisir d’avoir la même interface sur tous les terminaux avec Holo, ou d’offrir une plus grande flexibilité (comme à l’heure actuelle) via DeviceDefault.

Derrière cette opération se cache un moyen pour réduire la fragmentation. Pour les applications inférieures à Honeycomb (qui n’ont pas le thème Holographique – API < 11), la seule solution pour avoir une apparence unifiée sur les terminaux est de définir soi même le thème. Pour cela, il faut en créer dans res/values et res/values-v11.