Plusieurs résolutions d’écran / rapports d’aspect (jeux)

EDIT: Merci pour toutes vos réponses et commentaires. Après y avoir réfléchi, je reformulerais le cœur de la question en: “Comment déterminer et limiter la résolution / le ratio minimum sur lequel mon jeu peut fonctionner”. Parce qu’imo soit le jeu devient injouable sur le plus petit écran / ratio (manque de détail) ou même le plus petit écran / ratio dégrade l’expérience pour tous les autres de manière significative. En outre, nous ne soaps même pas ce que la plus petite résolution est ou peut restreindre de toute autre manière que de désactiver ldpi … ce qui ne nous dit toujours pas le plus petit mdpi. Après tout, je ne pense pas à créer un bon résultat mais à créer un résultat parfait;). Je suppose que ce n’est pas possible (encore?).

Remarque: cette question concerne uniquement les téléphones et non les tablettes. En outre, cette question n’est pas pertinente pour les applications comme pour les jeux qui n’utilisent pas le système de android layout.

J’ai toujours trouvé les définitions auxquelles s’attendre quelque peu vagues. Je suis au courant 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, si le fabricant est autorisé à utiliser d’autres solutions ou rapports de forme. Mon approche actuelle est de voir cette liste en termes de proportions qui ressemblent à quelque chose comme ça (Pas sûr que ce soit exact, mais vous avez l’idée):

  • ldpi: plus petit ratio d’aspect 4: 3
  • mdpi: plus petit ratio d’aspect 3: 2
  • hdpi: plus grand ratio d’aspect 16: 9

4: 33: 216: 9

Donc, si je veux couvrir une gamme d’appareils, je détermine ce que sont mes plus petits et mes plus grands rapports d’aspect et conçois la mise en page pour les plus petits tout en la faisant croître automatiquement. Par exemple, si je veux prendre en charge toutes les densités, je conçois les écrans pour 4: 3 et le fait passer à 16: 9. Au cas où je retirerais le support de ldpi je concevrais pour 3: 2. Bien sûr, cela suppose qu’il n’y aura jamais de périphérique mdpi avec un rapport d’aspect de 4: 3, ce qui nous ramène à ma première question.

Ma solution préférée serait d’indiquer sur l’Android Market les proportions que mon application peut gérer, mais cela ne semble pas possible jusqu’à présent.

Est-ce que quelqu’un a une meilleure approche? (Gardant à l’esprit que c’est pour les jeux uniquement sur les téléphones)

    Je ne peux pas répondre directement à votre question, mais j’aimerais vous dire mon approche. J’essaie de ne pas utiliser de chiffres du tout. Au lieu de cela, j’essaie d’utiliser des rembourrages, des marges et des dispositions relatives pour que mes vues soient correctes sur tous les téléphones. Cela m’aide également à éviter de créer une vue pour différentes orientations.

    Comme beaucoup de gens l’ont déjà mentionné, mon approche utiliserait aussi pleinement les composants indépendants du périphérique, tels que paddins, marges et relativelayouts, combinés avec des puxels indépendants du périphérique.

    Pour être honnête, et j’espère que je ne suis pas le seul, mais utiliser pleinement les DIP (pixels indépendants des périphériques) et la mise en page relative, etc., j’ai réduit mes fichiers de mise en page à 1 par activité au lieu de 3 types différents pour HDPI, MDPI et LDPI.

    Si vous êtes vraiment préoccupé par les proportions, vous pouvez toujours appeler les propriétés d’affichage en pixels de l’appareil et effectuer les calculs de mise en page appropriés en fonction de ces chiffres. Vous pouvez appeler cela au tout 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 les valeurs de largeur et de hauteur de votre configuration matérielle en pixels. À mon avis, la véritable raison pour laquelle vous choisiriez parmi trois types de mise en page est de vous assurer que la résolution de l’image rest suffisamment nette.

    Avec ces chiffres, vous pouvez créer une logique interne qui calcule quel type d’images de résolution charger dans certains widgets. Vous évitant ainsi de faire 3 fois la même mise en page ….

    peut-être expliqué un peu cryptique, mais la principale chose à surmonter les différentes résolutions de l’appareil est de travailler beaucoup avec:

    • relativelayouts
    • Pixels indépendants du périphérique

    Vous pouvez également définir des DIP dans la présentation XML, de sorte que chaque composant ait la même apparence sur chaque type de périphérique.

    Peut-être un exemple stupide, mais bon, ça a fonctionné pour moi 🙂 ci-dessous j’ai essayé d’obtenir la taille du texte sur une vue de texte pour être relativement identique sur tous les appareils. Vous pouvez appeler la classe ‘TypedValue’ et sélectionner l’une des nombreuses variables publiques proposées. Comme je voulais faire le TextView partout la même taille relative, j’ai utilisé le code ci-dessous:

     someTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18); 

    le nombre est de définir la taille de la taille des DIP. TypedValue peut être utilisé dans de nombreux composants de widget ou d’activité nécessitant une valeur INT pour les propriétés dimensionnelles. Jouez avec ça et vous verrez que cela rend la vie beaucoup plus facile :-p

    espérons que cette réponse aide un peu

    J’ai trouvé une réponse claire au problème.

    Les résolutions minimales ne sont pas définies avant la version 3.0. Ainsi, pour les versions 3.0 et supérieures, il sera possible de choisir une résolution minimale, de concevoir un jeu basé sur celui-ci et d’agrandir la présentation de manière dynamic sur des écrans / rapports plus importants, comme l’ont indiqué superM.

    Lorsque vous concevez votre interface utilisateur pour différentes tailles d’écran, vous découvrirez que chaque conception nécessite un minimum d’espace. Ainsi, chaque taille d’écran généralisée ci-dessus a une résolution minimale associée définie par le système. Ces tailles minimales sont en unités «dp» (les mêmes unités que vous devez utiliser lors de la définition de vos dispositions), ce qui permet au système d’éviter de se préoccuper des changements de densité d’écran.

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

    Remarque: ces tailles d’écran minimales n’étaient pas aussi bien définies qu’avant Android 3.0 . Il est donc possible que vous renconsortingez des appareils mal classés entre normal et grand. Celles-ci sont également basées sur la résolution physique de l’écran, elles peuvent donc varier d’un périphérique à l’autre. Par exemple, une tablette 1024×720 avec une barre système dispose d’un peu moins d’espace disponible pour l’application car elle est utilisée par la barre système.

    La source

    Il n’y a pas de liste exhaustive des proportions. Les fabricants peuvent décider quelle que soit leur résolution. En plus de cela, les proportions ne correspondent pas à la densité de pixels, donc utiliser ldpi / mdpi / hdpi pour décider des proportions n’est probablement pas une bonne idée.

    Votre stratégie pour gérer cela dépend vraiment de votre jeu. Bien sûr, dans une certaine mesure, vous devriez simplement mettre à l’échelle tout ce qui est plus grand / plus petit, mais les parties les plus délicates sont évidemment les bords qui diffèrent selon les proportions. Certains jeux (jeux de tir à la première personne, défilement latéral, jeux en mosaïque, etc.) vous permettent de fournir un champ de vision différent sans trop de problèmes, tant que vous ne vous souciez pas de certains avantages. d’autres vous pourriez envisager d’avoir un graphique extensible ou tiled pour l’arrière-plan et maintenir la même aire de jeu efficace (mise à l’échelle).

    Vous pouvez essayer de demander dans GameDev.stackexchange.com

    Voici un problème similaire au vôtre: créer un jeu pour différents téléphones de resoulution

    Vous pouvez limiter les périphériques à votre jeu sur le marché en fonction de la résolution de l’écran: http://developer.android.com/guide/appendix/market-filters.html

    Je ne me suis pas plongé dans le détail mais je ne vois malheureusement aucune mention du rapport hauteur / largeur, donc vous devrez peut-être remplir tous ceux que vous savez qui fonctionneront.

    À défaut, vous pouvez définir une résolution minimale dont vous avez besoin pour que vos graphiques soient beaux et, si vous ne souhaitez pas modifier le jeu pour les plus petits ratios, vous pouvez append des bordures noires comme ils le feraient sur les jeux de console. Ce n’est pas recommandé, cependant, l’espace de l’écran mobile est assez précieux, donc si vous coupez la zone de jeu avec des barres noires, je déplacerais votre HUD dans la zone noire afin que vous utilisiez toujours autant d’écran.

    Il y a plus d’informations sur les tailles d’écran supscopes ici: http://developer.android.com/guide/practices/screens_support.html

    : RÉ