Tailles d'écran de projection Android pour s'adapter à tous les appareils

j'ai un PNG plein écran que je veux afficher sur splash. Une seule erreur, et je n'ai aucune idée quelle taille mettre dans chaque dossier à dessiner( ldpi , mdpi , hdpi , et xhdpi ). Mon application est censée fonctionner bien et belle sur tous les téléphones et tablettes. Quelles tailles (en pixels) dois-je créer pour que le splash s'affiche bien sur tous les écrans?

196
demandé sur Peter Mortensen 2012-05-13 22:55:50

9 réponses

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 le pourrai, mais sans délai. Reportez-vous à la documentation officielle pour toutes les densités à l'heure actuelle (bien que l'information sur les tailles de pixels spécifiques est comme toujours difficile à trouver).

Voici la version tl / dr

  • créer 4 images, une pour chaque densité d'écran:

    • xlarge (xhdpi): 640x960
    • grand (hdpi): 480x800
    • moyenne (mdpi): 320x480
    • petit (ldpi): 240x320
  • Read 9-patch image introduction in Android Developer Guide

  • images de conception qui ont des zones qui peut être étiré en toute sécurité sans compromettre le résultat final

avec cela, Android sélectionnera le fichier approprié pour la densité de l'image de l'appareil, puis il étirera l'image selon la norme de 9-patch.

fin de tl;dr. Plein de post à venir

je réponds à la question concernant la conception. Je ne suis pas un développeur, donc je ne serai pas en mesure de fournir le code pour mettre en œuvre la plupart des les solutions proposées. Hélas, mon intention est d'aider les designers qui sont aussi perdus que je l'étais lorsque j'ai aidé à développer ma première application Android.

ajustement toutes tailles

avec Android, les entreprises peuvent développer leurs téléphones mobiles et des tables de presque toutes les tailles, avec presque toutes les résolutions qu'ils veulent. Pour cette raison, il n'y a pas de "bonne taille d'image" pour un écran de projection, car il n'y a pas de résolution d'écran fixe. Cela pose un problème pour les personnes qui veulent mettre en œuvre un l'écran de démarrage.

vos utilisateurs veulent vraiment voir un écran de démarrage?

(sur une note latérale, les écrans splash sont quelque peu découragés parmi les gars de usability. Il est soutenu que l'utilisateur sait déjà sur quelle application il a tapé, et marquer votre image avec un écran de projection n'est pas nécessaire, car il ne fait qu'interrompre l'expérience de l'utilisateur avec une "annonce". Il devrait être utilisé, cependant, dans les applications qui exigent un certain chargement considérable lors de l'initialisation (5s+), y compris les jeux et Tels, de sorte que l'utilisateur n'est pas coincé se demander si l'application s'est crashé ou non)

densité D'écran; 4 classes

ainsi, compte tenu de tant de résolutions d'écran différentes dans les téléphones sur le marché, Google a mis en œuvre des solutions alternatives et astucieuses qui peuvent aider. La première chose que vous devez savoir est que Android sépare tous écrans en 4 densités d'écran distinctes:

  1. Faible densité (ldpi ~ 120dpi)
  2. densité moyenne (mdpi ~ 160dpi)
  3. haute densité (hdpi ~ 240dpi)
  4. densité très élevée (xhdpi ~ 320dpi) (Ces valeurs de dpi sont des approximations, puisque les appareils construits sur mesure auront des valeurs de dpi variables)

ce que vous (si vous êtes un concepteur) devez savoir de cela est que Android choisit essentiellement de 4 images à afficher, en fonction de l'appareil. Donc, fondamentalement, vous doivent concevoir 4 images différentes (bien que plus peut être développé pour différents formats tels que Écran Large, portrait/mode paysage, etc).

avec cela à l'esprit sachez ceci: sauf si vous concevez un écran pour chaque résolution simple qui est utilisé dans Android, votre image s'étirera pour s'adapter à la taille de l'écran. Et à moins que votre image soit fondamentalement un gradient ou flou, vous obtiendrez une distorsion indésirable avec l'étirement. Donc, vous avez essentiellement deux options: créer une image pour chaque écran combinaison taille / densité, ou créer quatre images de 9 patches.

la solution la plus difficile est de concevoir un écran de projection différent pour chaque résolution. Vous pouvez commencer par suivre les résolutions dans le tableau à la fin de cette page (Il ya plus. Exemple: 960 x 720 n'y figure pas). Et en supposant que vous avez quelques petits détails dans l'image, comme le petit texte, vous devez concevoir de plus d'un écran pour chaque résolution. Par exemple, un 480x800 l'image affichée dans un écran moyen peut sembler correcte, mais sur un écran plus petit (avec une densité plus élevée/dpi) le logo peut devenir trop petit, ou certains textes peuvent devenir illisibles.

9-patch image

l'autre solution est de 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 en haut et à gauche de cette bordure, vous pouvez définir quelles parties de votre image seront autorisés à s'étirer. Je n'entrerai pas dans les détails du fonctionnement des images 9-patch 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

  1. vous pouvez faire ces images dans photoshop (ou n'importe quel logiciel de retouche d'image qui peut créer avec précision des png transparents).
  2. la bordure de 1 pixel doit être pleine TRANSPARENT.
  3. la bordure transparente de 1 pixel doit être tout autour de votre image, pas seulement en haut et à gauche.
  4. vous ne pouvez dessiner que des pixels noirs (#000000) dans cette zone.
  5. les bordures supérieure et gauche (qui définissent l'étirement de l'image) ne peuvent avoir qu'un point (1px x 1px), deux points (tous les deux 1px x 1px) ou une ligne continue (Largeur x 1px ou Hauteur x 1px).
  6. Si vous choisissez d'utiliser 2 points, l'image sera agrandie proportionnellement (de sorte que chaque point va prendre des tours d'expansion jusqu'à ce que la largeur/hauteur finale est atteinte)
  7. la bordure 1px doit être en plus des dimensions de base prévues. Ainsi, une image 100x100 9-patch doit en fait avoir 102x102 (100x100 +1px en haut, en bas, à gauche et à droite)
  8. 9-patch images à la fin *.9.png

ainsi vous pouvez placer 1 point de chaque côté de votre logo (dans la limite 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-patch, 102x102px (100x100 taille finale, pour les besoins de l'application):

9-patch image, 102x102px

voici un zoom de 200% de la même image:

the same image, magnified 2x for clarity

remarquez les marques 1px en haut et à gauche disant les lignes/colonnes se développer.

voici à quoi ressemblerait cette image en 100x100 à l'intérieur de l'application:

rendered into 100x100

et voici ce qu'elle voudrait si étendue à 460x140:

rendered into 460x140

une dernière chose à considérer. Ces images peuvent sembler très bien sur votre écran et sur la plupart des mobiles, mais si l'appareil a une densité d'image très élevée (ppp), l'image est 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-pièces différentes, chacune pour un jeu de densité différent. Pour vous assurer qu'aucun rétrécissement ne se produira, vous devriez concevoir dans la résolution commune la plus basse pour chaque catégorie de densité. Rétrécir est indésirable ici parce que 9-patch ne tient compte que des étirements, donc dans un processus de rétrécissement petit texte et d'autres éléments pourraient perdre leur 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
  • moyenne (mdpi): 320x480
  • petit (ldpi): 240x320

ainsi concevoir quatre écrans de projection dans les résolutions ci-dessus, d'élargir les images, en mettant un 1px bordure transparente autour de la toile, et marquez les rangées/colonnes qui seront étirables. Gardez à l'esprit que ces images seront utilisées pour tout "appareil 1519500920" dans la catégorie densité, de sorte que votre image ldpi (240 x 320) pourrait être étirée à 1024x600 sur une tablette extra grande avec une faible densité d'image (~120 dpi). Donc 9-patch est la meilleure solution pour l'étirement, aussi longtemps que vous ne voulez pas une photo ou des graphiques compliqués pour un écran d'éclaboussure (gardez à l'Esprit ces limites que vous créez le conception.)

encore une fois, la seule façon pour cet étirement de ne pas se produire est de concevoir un écran chaque résolution (ou un pour chaque combinaison résolution-densité, si vous voulez éviter que les images deviennent trop petites / grandes sur les appareils haute / basse densité), ou de dire à l'image de ne pas étirer et avoir une couleur de fond apparaît partout où l'étirement se produirait (rappelez-vous également qu'une couleur spécifique rendu par le moteur Android aura probablement l'air différent de la même couleur spécifique Rendu par photoshop, à cause des profils de couleur).

j'espère que ça avait un sens. Bonne chance!

384
répondu Lucas Cerro 2015-05-28 21:46:18

MODE PORTRAIT

MDPI est 320x480 dp = 320 x 480 pixels (1x)

LDPI is 0.75 x MDPI = 240x360px

HDPI is 1.5 x MDPI = 480x720px

XHDPI is 2 x MDPI = 640x960px

XXHDPI is 3 x MDPI = 960x1440px

XXXHDPI is 4 x MDPI = 1280x1920px

MODE PAYSAGE

MDPI is 480x320 dp = 480x320px (1x)

LDPI is 0.75 x MDPI = 360x240px

HDPI is 1.5 x MDPI = 720x480px

XHDPI is 2 x MDPI = 960x640px

XXHDPI is 3 x MDPI = 1440x960px

XXXHDPI is 4 x MDPI = 1920x1280px

100
répondu Ajmal Salim 2018-10-11 14:46:57

PORTRAIT

LDPI: 200x320px

MDPI: 320 x 480 pixels

HDPI: 480x800px

XHDPI: 720px1280px

paysage

LDPI: 320x200px

MDPI: 480x320px

HDPI: 800x480px

XHDPI: 1280x720px

27
répondu JRE.exe 2014-04-23 02:51:22

j'ai cherché la meilleure et la réponse la plus simple pour faire 9-patch image. Maintenant, faire l'image 9 patch est la tâche la plus facile.

From https://romannurik.github.io/AndroidAssetStudio/index.html vous pouvez faire une image 9-patch pour toutes les résolutions - XHDPI,HDPI,MDPI,LDPI en un seul clic.

15
répondu Owidat 2017-01-18 02:12:51

utiliser PNG n'est pas une bonne idée. En fait, c'est coûteux en termes de performance. Vous pouvez utiliser des fichiers XML à dessiner, par exemple, fond Facebook .

cela vous aidera à lisser et accélérer votre performance, et pour l'utilisation du logo .9 patch images.

11
répondu Nishant Shah 2014-11-28 18:48:52
Density buckets

LDPI    120dpi    .75x
MDPI    160dpi    1x
HDPI    240dpi    1.5x
XHDPI   320dpi    2x
XXHDPI  480dpi    3x
XXXHDPI 640dpi    4x

px / dp = dpi / 160 dpi
9
répondu Zero 2015-11-11 14:36:41

dans mon cas, j'ai utilisé list drawable dans le style.XML. Avec layer list drawable, vous avez juste besoin d'un png pour toutes les tailles d'écran.

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@drawable/flash_screen</item>
    <item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
</style>

et flash_screen.xml dans le dossier drawable.

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white"></item>
<item>
    <bitmap android:src="@drawable/background_noizi" android:gravity="center"></bitmap>
</item>

"background_noizi" est png dans le dossier drawable. J'espère que ça aide

3
répondu user3295573 2015-10-27 10:51:54

il y a quelque temps j'ai créé un fichier excel avec les dimensions supportées

Espérons que ce sera utile pour quelqu'un

pour être honnête j'ai perdu l'idée, mais il se réfère à une autre caractéristique de l'écran que la taille (non seulement la densité)

https://developer.android.com/guide/practices/screens_support.html

S'il vous plaît, informez-moi s'il y a des erreurs



Link1: dimensions.xlsx

Link2: dimensions.xlsx

2
répondu V. Kalyuzhnyu 2016-10-04 03:47:46

* * si vous cherchez les détails de l'écran pour tous les types d'appareils importants * *

aller à la matière.io

2
répondu WonderKid 2017-06-29 06:57:21