95 votes

Squelette d'application prenant en charge plusieurs écrans

Comme nous le savons, Android vient avec différents appareils qui ont différents caractéristiques, la résolution et la taille de l'écran, donc lors du développement d'une application qui supporte plusieurs écrans (petits et grands), il y a un obstacle de taille et de disposition.

Cela conduit à différentes combinaisons de tailles d'écran, résolutions et DPI et crée un véritable défi lors de la conception et du développement pour les appareils Android. Alors que certains autres fabricants (non Android) ont des résolutions et des DPI différents, ils partagent la même taille d'écran et les résolutions suivent le même rapport d'aspect. Par conséquent, une image peut être créée pour s'adapter aux appareils non Android.

Ma question est la suivante : y a-t-il un flux ou une architecture à suivre pour répondre à cette exigence ?

enter image description here

N'oubliez pas que nous avons des tablettes de différentes tailles et résolutions.

Je suis conscient que Développeur Android contient ces informations mais mon point de vue est celui de la mise en œuvre.

D'après mes connaissances, j'ai compris que pour concevoir des graphiques Android, même le programmeur doit connaître le concept de conception.

14 votes

Vous êtes sûrs que cette question n'est pas constructive ?

6 votes

Je pense que c'est très constructif. J'aimerais connaître les raisons des votes négatifs.

11 votes

@MKJParekh prendre MicroMax Funbook gsmarena.com/micromax_funbook_p300-4701.php 7", 480X800, Ldpi (133 dpi) Pouvez-vous me dire dans quelle catégorie (drawble-large ou Ldpi ou si Android v3.0 sw-480) il va tomber ?

148voto

hotveryspicy Points 21181

Enfin, nous avons créé une structure qui gère les mises en page et les icônes pour plusieurs écrans.

Android généralise les affichages des appareils en catégories basées sur deux paramètres :

  • La taille de l'écran, c'est-à-dire la taille physique de l'écran (mesurée en diagonale).
  • La densité de l'écran, la densité physique des pixels de l'écran (en pixels par pouce, ou ppi)`.

Pour déterminer rapidement la taille et la densité de l'écran, veuillez installer " Quelle est ma taille ? "pour Android.

Taille de l'écran

Android définit quatre tailles d'écran généralisées :


 Qualifier           Size

 small               ~3 inches (approx) 
 normal              ~4 inches (approx) 
 large               Exceeds 4 inches    
 xlarge              Exceeds 7 inches  
  • La plupart des téléphones sont classés comme petits ou normaux (environ 3 à 4 pouces de diagonale). Mais aujourd'hui, il existe de nombreux téléphones à grand écran, comme le Galaxy S4, le HTC One, le Xperia Z, etc.
  • Une petite tablette comme la Samsung Galaxy Tab est classée comme grande (plus de 4 pouces).
  • Extra-large s'applique aux appareils de grande taille, par exemple les grandes tablettes.

Android définit quatre densités d'écran généralisées :


 Qualifier         Description         Nominal value

 ldpi              low density          120 ppi
 mdpi              medium density       160 ppi
 hdpi              high density         240 ppi
 xhdpi             extra high density   320 ppi

Typiquement :

  • la taille de l'écran a le plus d'impact sur la mise en page de vos applications
  • la densité de l'écran a le plus d'impact sur vos ressources en images et en graphiques

Il est répertorié aquí la différence en pourcentage de l'écran du dispositif

  • Ldpi- 75
  • Mdpi- 100% (base selon le site du développeur Android)
  • Hdpi- 150%
  • XHdpi- 200%

enter image description here

Mais comme nous le savons maintenant, la plupart des appareils sont livrés avec 480X800 donc je considère que c'est un appareil de base, donc notre nouveau calcul sera le suivant

  • Ldpi- 50
  • Mdpi- 66.67%
  • Hdpi- 100
  • XHdpi- 133.33%

ce qui signifie que la première icône et le premier design seront créés pour 480X800 seulement et ensuite pour les autres (c'est-à-dire Ldpi, Mdpi, Xhdpi).

Certaines images sont communes à toutes les mises en page et doivent être uniformes en termes de couleur et de forme (pas de forme complexe, pas de courbe). 9patch qui doit être placé dans le dossier "drawable(no-suffix)". Pour créer une image 9Patch, vous pouvez soit utiliser DrawNinePatch o BetterNinePatch

Il ne vous reste plus qu'à renommer vos images en fonction des standards d'Android et à compléter votre application avec hdpi et puis juste prendre drawable-hdpi et ouvrir le dossier Adode Photoshop (recommandé) créer Action de plusieurs tailles (il suffit de changer la taille en fonction du pourcentage) une fois que l'action a été créée pour toutes les tailles, il suffit d'effectuer les opérations suivantes Automatisation des lots et donner la source (drawable-hdpi) et la destination (drawable-ldpi, drawable-mdpi, drawable-xdpi).

La raison pour laquelle j'insiste pour que vous utilisiez Photoshop est qu'il redimensionnera automatiquement votre image avec des actions et un autre point positif est que vous n'avez pas besoin de renommer le fichier (il attribuera le même nom que l'original).

une fois que vous avez terminé la création de toutes les images, rafraîchissez votre projet et testez-le.

Parfois, il peut y avoir une possibilité que la mise en page qui supporte l'écran (xhdpi, hdpi, mdpi) soit coupée dans un petit écran (ldpi). Pour gérer cela, il suffit de créer un dossier Layout séparé (layout-small) pour cela et d'ajouter ScrollView (principalement). C'est tout.

Tablette Les tablettes sont classées en deux catégories de taille.

  1. 7"(1024X(600-48(barre de navigation))) = 1024X552 (drawable-large)
  2. 10"(1280X(800-48(barre de navigation))) = 1280X752 (dessinable-xlarge)

Dans ce cas, nous devons créer une image pour les deux écrans et les placer en conséquence.

Ainsi, dans l'ensemble, nous aurons ce dossier dans notre application pour supporter plusieurs écrans.

drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge

sera une combinaison plus qualifiée avec Screen size and Screen density

drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi

plus de qualificatif avec Screen density and Version

drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11

et plus qualificatif avec Screen size and Version

drawable-large-v11
drawable-xlarge-v11

et plus qualificatif avec Smallest width concept(SW)

 drawable-sw???dp

De plus, dans Android V3.0 Honeycomb, ils ont introduit un nouveau concept de SW(smallest width) dans lequel les appareils sont classés par largeur d'écran, donc si nous créons un dossier nommé drawable-sw360dp alors le dispositif avec 720dp (soit la largeur ou la hauteur) utilisera la ressource de ce dossier.

par exemple pour trouver le Samsung Galaxy S3 dp suffixe à drawable-sw?dp
Avec la référence de Calcul du DP Si vous voulez que votre mise en page ou votre dessin soit soutenu par S3, le calcul indique que

px= largeur de l'appareil = 720
dpi= densité de l'appareil= 320

formule donnée

    px = dp * (dpi / 160)

formule interchangeable car nous avons la valeur de px

    dp = px / (dpi / 160)

maintenant la valeur,

     dp= 720 / (320/160);
     dp=360. 

donc drawable-sw360dp fera l'affaire

Obtenez la configuration de votre appareil à partir de GsmArena De même, vous pouvez créer un dossier en fonction de la version de l'API Android de l'appareil, par exemple drawable-hdpi-v11, de sorte que l'appareil qui a l'API11 et qui est Hdpi utilisera ces ressources.

Conseils supplémentaires :

  • Utiliser des dispositions relatives, dp, sp et mm

    unités dp - pixels indépendants du dispositif normalisés à 1 pixel physique sur un écran de 160 ppi, c'est-à-dire une densité moyenne. Mise à l'échelle au moment de l'exécution. À utiliser pour les dimensions des éléments d'écran

    unités sp - pixels mis à l'échelle, spécifiés en tant que valeurs à virgule flottante, basés sur les unités dp mais mis à l'échelle en plus pour le paramètre de préférence de taille de police de l'utilisateur. Mise à l'échelle au moment de l'exécution. Utilisation pour les tailles de police

    vous devez toujours utiliser RelativeLayout pour les mises en page ; AbsoluteLayout est déprécié et ne doit pas être utilisé.

  • Utilisez les formats d'image appropriés - PNG versus JPEG

    Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.

    Cependant, PNG et JPEG ne sont pas équivalents. Ils ont des compromis de qualité différents, et le PNG n'est pas toujours le meilleur :

    JPEG peut offrir une réduction de la taille des fichiers allant jusqu'à 50 % par rapport au format PNG, ce qui est important si votre application utilise beaucoup d'images.

    Un JPEG "avec perte" de haute qualité peut avoir un meilleur aspect qu'un PNG "sans perte" hautement compressé, pour la même taille de fichier.

  • Ajouter des étiquettes à vos images et graphiques pour le débogage

  • Utilisez l'élément "Supports d'écrans".

  • Configurer vos émulateurs avec les valeurs réelles des dispositifs

    Par convention, les systèmes de bureau affichent à 72ppi (Mac), ou 96ppi (Windows, Linux). Par rapport aux systèmes mobiles, les écrans de bureau sont toujours de faible densité.

    Configurez toujours vos émulateurs Android pour qu'ils imitent les valeurs réelles des appareils, et réglez-les toujours à l'échelle pour émuler la densité des appareils.

    Dans Eclipse, il est facile de créer plusieurs émulateurs (dans la barre de menu d'Eclipse, sélectionnez Fenêtre > Gestionnaire AVD > Nouveau ) configurés avec des valeurs pour des dispositifs réels :

    Nommez l'émulateur en fonction du dispositif réel qu'il émule. Spécifiez la résolution, n'utilisez pas les tailles génériques intégrées. Définissez la densité du périphérique pour qu'elle corresponde au périphérique réel (dans le volet Matériel, définissez la propriété Abstracted LCD sur la densité réelle, toujours une valeur entière).

    Lorsque vous lancez l'appareil, sélectionnez toujours l'option Échelle d'affichage à la taille réelle, puis saisissez la dimension réelle de l'écran en pouces.

    Si vous ne définissez pas la densité du périphérique, l'émulateur utilise par défaut la basse densité et charge toujours les ressources spécifiques à ldpi. La résolution (dimensions des pixels) sera correcte, mais vos ressources d'image dépendant de la densité ne s'afficheront pas comme prévu.

    Bien entendu, rien de ce que vous ferez ne permettra de reproduire une qualité d'image de haute densité sur un écran de bureau de plus faible densité.

Voici les données recueillies pendant une période de 7 jours se terminant le 1er octobre 2012. Pour voir les dernières statistiques sur la version de la plateforme Android, aller ici

En fonction de la taille de l'écran

enter image description here

Basé sur la densité de l'écran

enter image description here

2 votes

Pour samsung galaxy tab 7", nous devons garder les images sous drawable-large-hdpi sinon l'image sera étirée ou rétrécie.

0 votes

@rajpara il y a beaucoup de combinaison et de permutation, nous allons inclure tous ces cas plus tard.

0 votes

Puis recherche d'autres combinaisons et permutations.

1voto

Alok Points 426

Les concepteurs doivent créer des modèles de base de

base size of mdpi devices * density conversion factor of highest supported density bucket
La taille de l'écran de base est de 320 X 480 px et les densités sont les suivantes :

  • ldpi : 0.75
  • mdpi : 1.0 (densité de base)
  • hdpi : 1,5
  • xhdpi : 2.0
  • xxhdpi : 3.0
  • xxxhdpi : 4.0

Et pour faire face à l'espace supplémentaire disponible sur les appareils Android, il faut utiliser des composants extensibles dans les deux sens (horizontalement et verticalement). Des informations détaillées sont disponibles ici :

http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

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