44 votes

Plusieurs résolutions d'écran/des proportions (jeux)

EDIT: Merci à tous pour vos réponses et commentaires. Après y avoir réfléchi, je voudrais reformuler le cœur de la question: "Comment déterminer et limiter la résolution minimale/ratio de mon niveau de jeu est capable de fonctionner sur n'". En raison de l'omi soit le jeu devient injouable sur le petit écran/ratio (manque de détails) ou soutenu, même le plus petit écran/ratio se dégrade l'expérience pour tous les autres, de manière significative. D'ailleurs, nous ne savent même pas ce que la plus petite résolution est ou peut restreindre d'une autre manière que la désactivation de ldpi... ce qui ne nous dit pas encore sur le plus petit mdpi. Après tout, je ne suis pas la pensée sur la façon de créer un bon résultat, mais sur la façon de créer un résultat parfait ;). Suppose qu'il n'est pas possible (encore?).

Remarque: C'est uniquement sur les téléphones qui n'ont pas de tablettes Aussi cette question n'est pas pertinente pour les applications que c'est pour les jeux qui n'utilisent pas l'Android système de mise en page.

J'ai toujours trouvé les définitions des résolutions d'attendre un peu vague. Je suis conscient de la liste dans les docs.

Maintenant, ma première question est de savoir si cette liste est complète ou en d'autres termes fabricant sont autorisés à utiliser d'autres reolutions ou des proportions. Ma démarche actuelle est à la vue de cette liste en termes de ratios d'aspect qui ressemble à quelque chose comme ça (je ne sais Pas si c'est exact, mais vous voyez l'idée):

  • ldpi: le plus petit ratio d'aspect 4:3
  • mdpi: le plus petit ratio d'aspect 3:2
  • hdpi: plus grand rapport d'aspect de 16:9

4:33:216:9

Donc, si je veux couvrir une large gamme d'appareils-je savoir ce que mon plus petit et mon plus grand aspect ratios et de concevoir la mise en page pour les plus petits tout en les rendant automatiquement poussent à la plus grande. Par exemple, si je veux soutenir toutes les densités j'ai concevoir les écrans 4:3 et le faire croître de 16:9. Dans le cas où je supprimer ldpi soutien je voudrais conception de 3:2. Bien sûr, cela suppose qu'il ne sera jamais un mdpi appareil avec un rapport d'aspect de 4:3, ce qui nous ramène à ma première question.

Mon préféré la solution serait d'indiquer sur l'Android Market qui les ratios d'aspect de mon application peut gérer mais ça ne semble pas possible jusqu'à présent.

Quelqu'un aurait-il une meilleure approche? (Tout en gardant à l'esprit que c'est pour les jeux sur téléphones portables uniquement)

19voto

superM Points 2985

Je ne peux pas répondre directement à votre question, mais je tiens à vous dire mon approche. J'essaie de ne pas utiliser tous les numéros. Au lieu de cela j'ai essayer d'utiliser les rembourrages, les marges et la relative mises en page afin que mon point de vue look correctement sur n'importe quel téléphone. Il m'aide aussi à éviter de créer une vue d'orientations différentes.

4voto

Hugo Sepulveda Points 111

Comme beaucoup de gens ici mentionné avant, mon approche serait aussi faire plein usage de l'appareil indépendant de composants, tels que paddins, les marges, et relativelayouts, combiné avec l'Appareil indépendantes puxels.

Pour être très franchement, et j'espère que je ne suis pas le seul, mais de faire plein usage de DIP (appareil indépendantes pixels) et relative layouting et comme...a réduit mon activité des fichiers de mise à 1 par activité au lieu de 3 différents types de HDPI, MDPI et LDPI.

dans le cas où vous êtes vraiment préoccupés par l'aspect ratio, vous pouvez toujours appeler les propriétés d'affichage en pixels de l'appareil, et de faire des mise en page des calculs basés sur les chiffres. Vous pouvez appeler ce, dès le début de la méthode onCreate de votre première activité.

Display display = getWindowManager().getDefaultDisplay(); int displayWidth = display.getWidth(); int displayHeight = display.getHeight();

cela vous donnera la largeur et la hauteur de votre matériel siplay en pixels. À mon avis, la véritable raison de choisir plus de 3 types de mise en page est de s'assurer que la résolution de l'image reste assez nette.

Avec ces chiffres, vous pouvez faire de la logique interne, qui calcule wich type de la résolution des images à charger dans certains widgets. Vous épargnant ainsi la peine de faire 3 fois la même mise en page....

peut-être expliqué un peu énigmatique, mais la chose principale à surmonter les différentes résolutions de périphérique est de travailler beaucoup avec:

  • relativelayouts
  • Appareil indépendant de Pixels

vous pouvez également définir les TREMPER dans le XML de mise en page, de sorte que tous les composants à l'air d'être le même à chaque type de périphérique.

peut-être un Exemple stupide, mais bon, il a travaillé pour moi :-) voici ci-dessous, j'ai essayé d'obtenir la taille du texte sur une textview relativement le même sur tous les appareils. Vous pouvez appeler la " TypedValue'class, sélectionnez-le et sélectionnez l'une des nombreuses variables qui y sont proposés. Comme je voulais faire le TextView partout la même taille, j'ai utilisé le code ci-dessous :

someTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);

le nombre est de définir quelle est la taille la taille dans le DIP doit être. TypedValue peut être utilisé dans de nombreux widget ou de l'activité composantes qui nécessitent un INT valeur pour les propriétés dimensionnelles. Jouer avec et vous verrez qu'elle vous rend la vie beaucoup plus facile :-p

espérons que cette réponse vous aide un peu

4voto

mibollma Points 5389

J'ai trouvé une réponse claire à ce problème.

Minimum résolutions ne sont pas définis antérieures à la version 3.0. Donc pour la 3.0 et au-dessus, il sera possible de choisir une résolution minimale, la conception d'un jeu basé sur elle et de faire croître la mise en page de façon dynamique sur les écrans de grande taille/les ratios mentionnés par superM et les autres.

Lors de la conception de votre INTERFACE utilisateur pour les différentes tailles d'écran, vous découvrirez que chaque modèle nécessite un minimum d'espace. Ainsi, chaque généralisée taille de l'écran ci-dessus est associé à une résolution minimale définie par le système. Ces tailles minimales sont en "dp" unités-les mêmes unités vous devez utiliser lors de la définition de vos mises en page qui permet au système de évitez de vous soucier des changements dans la densité de l'écran.

  • xlarge écrans sont au moins 960dp x 720dp
  • les grands écrans sont au moins 640dp x 480dp
  • écrans normaux sont au moins 470dp x 320dp
  • les petits écrans sont au moins 426dp x 320dp

Remarque: Ces tailles d'écran étaient pas aussi bien défini avant Android 3.0, de sorte que vous pouvez rencontrer certains des dispositifs qui sont mal classés entre le normal et le grand. Ils sont basés sur la physique la résolution de l'écran, donc peuvent varier selon les appareils, par exemple un 1024x720 tablette avec un système de la barre, en réalité, a un peu moins d'espace disponible à la demande en raison de son utilisation par le système de barre.

Source

3voto

kabuko Points 23166

Il n'existe pas de liste exhaustive des rapports d'aspect. Les fabricants peuvent décider, quelle que soit la résolution qu'ils en ont envie. En plus de cela, les proportions ne correspondent pas avec la densité de pixel, en utilisant de ldpi/mdpi/hdpi de décider de l'aspect ratio est probablement pas une bonne idée.

Votre stratégie pour faire face à cela dépend vraiment de votre jeu. Bien sûr, dans une certaine mesure, il vous suffit de l'échelle de tout le plus grand/plus petit, mais, évidemment, les parties difficiles sont les bords qui sont différents sur les différents rapports d'aspect. Certains jeux (fps, à défilement latéral, du carrelage de haut en bas des jeux, etc.) vous pouvez simplement offrir un champ de vision différent sans trop de problème tant que vous n'êtes pas peur de donner un avantage à certains dispositifs, pour d'autres, vous pourriez envisager d'avoir un extensible ou carreler graphiques pour le fond, et de conserver le même effectif (à l'échelle) aire de jeu.

2voto

f20k Points 2457

Vous pouvez essayer de demander sur GameDev.stackexchange.com

Ici est un problème similaire à la vôtre: la construction d'un jeu pour les différents resoulution téléphones

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