46 votes

N'utiliser les éléments dessinés XHDPI que dans les applications Android ?

Si vous prévoyez de prendre en charge LDPI, MDPI, HPDI et peut-être XHDPI dans un avenir proche, est-il possible d'inclure uniquement les éléments graphiques XHDPI dans le projet et de laisser les périphériques les mettre à l'échelle à la résolution souhaitée ?

J'ai testé de redimensionner les dessins en MDPI et HDPI dans Photoshop, puis j'ai comparé le résultat avec les dessins XHDPI redimensionnés uniquement par Android, et je ne vois aucune différence. Est-ce une mauvaise conception de prendre ce raccourci ? Ce serait bien de ne pas avoir à redimensionner chaque dessin dans 3 résolutions différentes.

Il est prévu d'utiliser le SDK cible 2.1 ou 2.2.

BR Emil

25voto

Will Kru Points 3452

Je pense que c'est une bonne solution. Le seul inconvénient auquel je peux penser est la surcharge de ressources sur les appareils à petite échelle et les artefacts possibles en raison de la réduction d'échelle. En fait, à la Google IO de cette année, Chris Pruett a recommandé de n'intégrer que des ressources à haute résolution et de laisser opengl gérer la mise à l'échelle.

15voto

Ian G. Clifton Points 4648

Depuis Android 1.6, différentes densités sont gérées, y compris le XHDPI (qui n'a été officiellement ajouté qu'en 2.2). Votre application cherchera d'abord une image correspondant à sa densité, mais elle peut chercher dans des "compartiments" plus grands comme le XHDPI et effectuer la mise à l'échelle pour vous.

Il est préférable d'inclure des ressources spécifiques pour les densités que vous souhaitez prendre en charge. Une image de 100x100 occupe 40 ko et une image de 200x200 occupe 160 ko (sans compression). Ainsi, toute ressource XHDPI utilisée sur des périphériques MDPI représente quatre fois la quantité de données dont vous avez besoin, qui doit être gérée lorsque l'application démarre et que vos ressources sont préparées. Une utilisation plus faible de la mémoire signifie une plus grande efficacité et moins de risques d'exception OutOfMemoryException.

De plus, certains types d'images ont une mauvaise apparence lorsqu'ils sont mis à l'échelle automatiquement. En particulier, les images comportant des lignes ou des motifs fins verront leurs détails brouillés. Lorsque vous réduisez les images à la main, vous pouvez choisir l'algorithme qui correspond le mieux à vos besoins (linéaire, bicubique, lanczos, etc.).

Si vous craignez le temps qu'il faut pour effectuer le redimensionnement vous-même, vous pouvez intégrer un processus par lot ou utiliser des outils tels que Nine Patch Resizer : http://code.google.com/p/9patch-resizer/

4voto

JC Del Valle Points 153

J'ai testé dans une application simple (développée pour Android 2.1) en utilisant uniquement des images xhdpi et cela fonctionne bien en petites, moyennes et hautes résolutions... même j'ai testé dans un Android 2.1 (petite résolution) et cela ouvre l'imagen sans problème.

Peut-être que la chose avec la mémoire est vraie, donc il est nécessaire que quelqu'un le teste.

2voto

Intrications Points 8182

XHDPI n'a été introduit que dans le SDK Android API Level 9 (Gingerbread) (voir http://developer.Android.com/reference/Android/util/DisplayMetrics.html#DENSITY_XHIGH ). Par conséquent, si vous prévoyez d'utiliser un SDK d'un niveau minimum inférieur à 9, vous devrez également fournir, au moins, des valeurs HDPI, sinon les appareils équipés de Froyo ou d'un système inférieur n'afficheront rien.

Mise à jour : Il semble en fait que les versions antérieures à Gingerbread affichent les images xhdpi : https://groups.google.com/d/msg/Android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ

2voto

Zsolt Safrany Points 1688

Il n'y a pas de problème à n'avoir que des ressources xhdpi. Mais notez que xhdpi a été introduit avec le niveau api 9 (gingerbread). En d'autres termes, si vous visez des niveaux d'api <=8, vous avez besoin au moins de ressources hdpi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X