Avertissement
Cette réponse date de 2013 et est sérieusement dépassée. Depuis Android 3.2, il y a maintenant 6 groupes de densité d'écran. Cette réponse sera mise à jour dès que je pourrai, mais sans ETA. Reportez-vous à la documentation officielle pour toutes les densités à l'heure actuelle (bien que les informations sur les tailles de pixels spécifiques soient toujours difficiles à trouver).
Voici la version tl / dr
Créez 4 images, une pour chaque densité d'écran:
- xlarge (xhdpi): 640x960
- grand (hdpi): 480x800
- moyen (mdpi): 320x480
- petit (ldpi): 240x320
Lire l' introduction de l'image à 9 patchs dans le Guide du développeur Android
- Concevez des images dont les zones peuvent être étirées en toute sécurité sans compromettre le résultat final
Avec cela, Android sélectionnera le fichier approprié pour la densité d'image de l'appareil, puis il étirera l'image selon la norme 9 patchs.
fin de tl; dr. Article complet à venir
Je réponds en ce qui concerne l'aspect lié à la conception de la question. Je ne suis pas développeur, je ne pourrai donc pas fournir de code pour implémenter la plupart des solutions proposées. Hélas, mon intention est d'aider les designers qui sont aussi perdus que moi lorsque j'ai aidé à développer ma première application Android.
Convient à toutes les tailles
Avec Android, les entreprises peuvent développer leurs téléphones mobiles et leurs tables de presque toutes les tailles, avec presque toutes les résolutions souhaitées. Pour cette raison, il n'y a pas de "bonne taille d'image" pour un écran de démarrage, car il n'y a pas de résolutions d'écran fixes. Cela pose un problème pour les personnes qui souhaitent implémenter un écran de démarrage.
Vos utilisateurs veulent-ils vraiment voir un écran de démarrage?
(Sur une note latérale, les écrans de démarrage sont quelque peu découragés par les utilisateurs. Il est avancé que l'utilisateur sait déjà sur quelle application il a appuyé, et la personnalisation de votre image avec un écran de démarrage n'est pas nécessaire, car cela interrompt uniquement l'expérience utilisateur avec une "annonce". Elle doit être utilisée, cependant, dans les applications qui nécessitent un certain chargement considérable lors de l'initialisation (5s +), y compris les jeux et autres, afin que l'utilisateur ne se bloque pas en se demandant si l'application a planté ou non)
Densité d'écran; 4 cours
Ainsi, étant donné le nombre de résolutions d'écran différentes sur les téléphones sur le marché, Google a mis en place des alternatives et des solutions astucieuses qui peuvent vous aider. La première chose que vous devez savoir est qu'Android sépare TOUS les écrans en 4 densités d'écran distinctes:
- Basse densité (ldpi ~ 120dpi)
- Densité moyenne (mdpi ~ 160dpi)
- Haute densité (hdpi ~ 240 dpi)
- Extra-haute densité (xhdpi ~ 320dpi) (Ces valeurs dpi sont des approximations, car les appareils personnalisés auront des valeurs dpi variables)
Ce que vous (si vous êtes un concepteur) devez savoir, c'est qu'Android choisit essentiellement parmi 4 images à afficher, en fonction de l'appareil. Vous devez donc essentiellement concevoir 4 images différentes (bien que d'autres puissent être développées pour différents formats tels que le grand écran, le mode portrait / paysage, etc.).
Dans cet esprit, sachez ceci: à moins que vous ne conceviez un écran pour chaque résolution unique utilisée dans Android, votre image s'étirera pour s'adapter à la taille de l'écran. Et à moins que votre image ne soit essentiellement un dégradé ou un flou, vous obtiendrez une distorsion indésirable avec l'étirement. Vous avez donc essentiellement deux options: créer une image pour chaque combinaison taille / densité d'écran, ou créer quatre images à 9 patchs.
La solution la plus difficile consiste à concevoir un écran de démarrage différent pour chaque résolution. Vous pouvez commencer par suivre les résolutions du tableau à la fin de cette page (il y en a plus. Exemple: 960 x 720 n'y est pas répertorié). Et en supposant que vous ayez quelques petits détails dans l'image, comme un petit texte, vous devez concevoir plus d'un écran pour chaque résolution. Par exemple, une image 480x800 affichée sur un écran moyen peut sembler correcte, mais sur un écran plus petit (avec une densité / dpi plus élevée) le logo peut devenir trop petit, ou du texte peut devenir illisible.
Image à 9 patchs
L'autre solution consiste à créer une image à 9 patchs . Il s'agit essentiellement d'une bordure transparente de 1 pixel autour de votre image, et en dessinant des pixels noirs dans la zone supérieure et gauche de cette bordure, vous pouvez définir les parties de votre image qui seront autorisées à s'étirer. Je n'entrerai pas dans les détails du fonctionnement des images à 9 patchs, mais, en bref, les pixels qui s'alignent sur les marquages en haut et à gauche sont les pixels qui seront répétés pour étirer l'image.
Quelques règles de base
- Vous pouvez créer ces images dans Photoshop (ou tout autre logiciel de retouche d'image qui peut créer avec précision des pngs transparents).
- La bordure de 1 pixel doit être PLEINE TRANSPARENTE.
- La bordure transparente de 1 pixel doit être tout autour de votre image, pas seulement en haut et à gauche.
- vous ne pouvez dessiner que des pixels noirs (# 000000) dans cette zone.
- Les bordures supérieure et gauche (qui définissent l'étirement de l'image) ne peuvent avoir qu'un seul point (1px x 1px), deux points (les deux 1px x 1px) ou UNE ligne continue (largeur x 1px ou 1px x hauteur).
- Si vous choisissez d'utiliser 2 points, l'image sera agrandie proportionnellement (de sorte que chaque point s'agrandira à tour de rôle jusqu'à ce que la largeur / hauteur finale soit atteinte)
- La bordure 1px doit être en plus des dimensions de fichier de base prévues. Donc, une image 100 x 100 à 9 patchs doit en fait avoir 102 x 102 (100 x 100 + 1 px en haut, en bas, à gauche et à droite)
- Les images à 9 patchs doivent se terminer par * .9.png
Vous pouvez donc placer 1 point de chaque côté de votre logo (dans la bordure supérieure), et 1 point au-dessus et en dessous (sur la bordure gauche), et ces lignes et colonnes marquées seront les seuls pixels à étirer.
Exemple
Voici une image à 9 patchs, 102x102px (taille finale 100x100, pour les applications):
Voici un zoom à 200% de la même image:
Notez les marques 1px en haut et à gauche indiquant quelles lignes / colonnes vont se développer.
Voici à quoi ressemblerait cette image en 100x100 dans l'application:
Et voici ce qu'il souhaiterait s'il était étendu à 460x140:
Une dernière chose à considérer. Ces images peuvent sembler correctes sur l'écran de votre moniteur et sur la plupart des mobiles, mais si l'appareil a une densité d'image très élevée (dpi), l'image sera trop petite. Probablement encore lisible, mais sur une tablette avec une résolution de 1920x1200, l'image apparaîtrait comme un très petit carré au milieu. Alors, quelle est la solution? Concevez 4 images de lanceur à 9 patchs différentes, chacune pour un ensemble de densité différent. Pour garantir qu'aucun rétrécissement ne se produira, vous devez concevoir la résolution commune la plus basse pour chaque catégorie de densité. Le rétrécissement n'est pas souhaitable ici car le patch 9 ne tient compte que de l'étirement, donc dans un processus de rétrécissement, le petit texte et d'autres éléments peuvent perdre de la lisibilité.
Voici une liste des résolutions les plus petites et les plus courantes pour chaque catégorie de densité:
- xlarge (xhdpi): 640x960
- grand (hdpi): 480x800
- moyen (mdpi): 320x480
- petit (ldpi): 240x320
Concevez donc quatre écrans de démarrage dans les résolutions ci-dessus, agrandissez les images, placez une bordure transparente de 1 px autour du canevas et marquez les lignes / colonnes qui seront extensibles. Gardez à l'esprit que ces images seront utilisées pour N'IMPORTE QUEL appareil dans la catégorie de densité, de sorte que votre image ldpi (240 x 320) peut être étirée à 1024x600 sur une tablette extra large avec une faible densité d'image (~ 120 dpi). Le patch 9 est donc la meilleure solution pour l'étirement, tant que vous ne voulez pas de photo ou de graphiques compliqués pour un écran de démarrage (gardez à l'esprit ces limitations lorsque vous créez le design).
Encore une fois, la seule façon pour que cet étirement ne se produise pas est de concevoir un écran pour chaque résolution (ou un pour chaque combinaison résolution-densité, si vous voulez éviter que les images ne deviennent trop petites / grandes sur les appareils à haute / basse densité), ou à dire l'image ne doit pas s'étirer et une couleur d'arrière-plan apparaît partout où l'étirement se produirait (rappelez-vous également qu'une couleur spécifique rendue par le moteur Android sera probablement différente de la même couleur spécifique rendue par photoshop, en raison des profils de couleur).
J'espère que cela a du sens. Bonne chance!