2010-12-05 3 views
28

J'ai fait des recherches sur les dispositions de construction qui fonctionnent pour plusieurs tailles d'écran et je cherche des éclaircissements.Comment faites-vous des mises en page pour plusieurs tailles d'écran Android?

Est-ce une pratique courante de créer un fichier de mise en page distinct pour chacune des trois tailles d'écran (petite, moyenne, grande) ou pouvez-vous accomplir cela avec une méthode plus simple? J'ai testé mes projets sur un grand écran, et même si j'utilise des DIP (pixels indépendants de la densité) pour le rembourrage, les marges, etc., il se dépose quand je le vois sur des écrans plus petits. Devrais-je concevoir mes projets pour des écrans de taille moyenne et permettre à Android de l'adapter correctement? Je ne sais pas si c'est une bonne question ou non, mais je cherche ce que la pratique courante est de concevoir pour plusieurs tailles d'écran. Que faire? Edit: En plus de cela, par exemple, disons que j'ai un bouton qui est 40dip au-dessus du bas de l'écran, devrais-je écrire littéralement 40dip, ou devrais-je utiliser une sorte de pixel mathématique comme 40 * screenWidth/blahblah ou quelque chose de sorte qu'il évolue en fonction de la taille de l'écran de l'utilisateur? J'ai une expérience limitée avec les IU ...

+0

Oui, vous pouvez accomplir cela de manière simple, voir ma réponse http://stackoverflow.com/a/16518557/1939564 –

Répondre

14

Il y a deux axes à considérer en ce qui concerne la taille de l'écran: la taille physique et la densité. La densité est gérée en fournissant des mesures dans les creux et les ressources mises à l'échelle, selon le cas. Mais la densité n'implique pas toujours la taille ou vice versa. Voir http://developer.android.com/guide/practices/screens_support.html pour plus d'informations sur la mécanique.

Il est rare ou recommandé d'avoir différentes mises en page sur chaque écran résolution vous aider, mais il est tout à fait raisonnable de concevoir différentes dispositions pour différentes classes de taille (petite, moyenne, grande). Les écrans de tailles différentes peuvent bénéficier de l'ajout, de la suppression ou du repositionnement de certains éléments de navigation en fonction de l'application.Dans une certaine classe de taille, vous devez vous assurer que vos dispositions tolèrent des variances dans la résolution d'écran exacte. Comme l'a suggéré Falmarri, utilisez les mises en page relatives, les poids et les autres outils disponibles pour que votre mise en page s'étire harmonieusement.

+0

Bon alors c'est là que j'étais confus. J'ai remarqué que lorsque je regardais mon application sur une instance d'émulateur de taille normale, je perdais le pouce inférieur du contenu. Tout était mise à l'échelle et le positionnement correctement. Alors je devrais utiliser une mise en page séparée pour les différentes tailles d'écran, pas de densités, correct? – joepetrakovich

+0

C'est une façon de le faire. Mais si vous perdez le pouce inférieur du contenu de votre mise en page, je suppose que tout ne se met pas à l'échelle et ne se positionne pas correctement. ;) Il existe de nombreux appareils différents avec des résolutions et des densités différentes qui rapporteront tous la taille d'écran «normale». Une seule mise en page devrait être capable de faire face à cela. – adamp

+0

Dois-je concevoir mon application en tant que taille de base normale et la laisser évoluer à grande échelle? Depuis que je fais le contraire. – joepetrakovich

1

Il n'est pas vraiment pratique de faire des mises en page séparées. Seulement quand vous avez des images qui ne peuvent pas être étirées, c'est vraiment la méthode recommandée.

Les éléments seront toujours légèrement étirés/compressés lorsqu'ils sont affichés sur des périphériques dotés d'écrans plus petits ou plus grands. C'est un peu la définition d'un écran de taille différente. Vous devez simplement utiliser des dispositions relatives et laisser Android contrôler les numéros de pixels spécifiques.

+0

J'ai différentes dispositions pour chacun, mais ne fonctionne toujours pas. http://stackoverflow.com/questions/34378238/landscape-mode-for-app –

+0

Cette question a 5 ans. Demandez-en un nouveau. – Falmarri

+0

Euh, je sais. C'est pourquoi, j'ai lié ma ** nouvelle ** question pour vous ... –

3

La règle générale est d'utiliser des pixels indépendants de la densité (dips) pour les définitions de taille dans vos xmls de mise en page - Je vois que vous le faites déjà. Ce faisant, j'ai juste la seule disposition pour tous les appareils. Ce qui doit être divisé est le graphisme. Pour cela, j'utilise 3 répertoires dessinables différents - 'drawable-ldpi', 'drawable-mdpi' et 'drawable-hdpi'. Ceci est fait dans les images afin d'avoir la même taille (disons, en millimètres) sur les différentes densités d'écran (en supposant la taille de l'écran est le même - Normal, par exemple), ils devraient être mis à l'échelle comme suit:

  • drawable- hdpi: 150%
  • drawable-mdpi: 100%
  • drawable-LDPI: 75%

il est probablement un mauvais conseil. Cependant, si vous regardez le Google chart of Screen Sizes and Densities, vous pouvez décider de ne pas investir vos efforts supplémentaires à des tests approfondis pour les grands écrans, car il n'y a presque pas de tels dispositifs sur le marché.

+0

Je supporte également Falmarri - utiliser des dispositions relatives. les vues doivent simplement remplir le contenu parent ou le contenu d'habillage. utiliser probablement des constantes uniquement pour la taille du texte et les paddings/marges. –

+0

Quand vous parlez de 'à l'échelle', voulez-vous dire quelque chose comme: Ouvrez le photoshop, chargez l'image et allez au fichier> redimensionnez l'image (ou quelque chose comme ça) et réduisez-la d'un certain pourcentage? – joepetrakovich

+0

@PetrakovichJ: Oui, je veux dire que les images doivent être mises à l'échelle dans un éditeur d'image avant de les mettre dans ces répertoires. –

Questions connexes