Comment supporter toutes les différentes résolutions de produits Android
Toutes les différentes résolutions des différents produits Android sont me rend fou.
Ma première application android que j'ai écrit a été conçu de manière à pris en charge les trois couramment utilisé de résolution: 240x320 (LDPI), 320 x 480 (MDPI) et 480x800 (HDPI). Le 480x854 ne pas faire du mal à la mise en page, car il a la même largeur que 480x800.
J'ai aussi acheté les appareils suivants pour tester mes applications android sur:
Samsung Galaxy Europe (LDPI)
Le HTC Desire Z (HDPI)
Heureusement, ma copine a un HTC Wildfire S (MDPI) donc j'ai la plupart des résolutions couvert.
Mais aujourd'hui, mon frère téléchargé une appli sur son nouveau HTC Sensation qui a encore une autre résolution 540x960 (HDPI?). Qui n'a pas montrer mon application comme il se doit et probablement la plupart des tablettes de ne pas s'afficher correctement.
Ce que j'ai fait avec ma première application a été la lecture de la densité et puis définissez les paramètres:
public void set_ui_parameters() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
if(metrics.densityDpi == DisplayMetrics.DENSITY_HIGH){
textSize = 35;
timeWidth = 80;
dayWidth = 110;
moneyWidth = 50;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM){
textSize = 35;
timeWidth = 53;
dayWidth = 73;
moneyWidth = 33;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_LOW){
textSize = 28;
timeWidth = 40;
dayWidth = 55;
moneyWidth = 25;
}
}
Outre les paramètres j'ai également créé un drawable pour LDPI, MDPI et HDPI. Cela fonctionne très bien pour les résolutions décrites ci-dessus, mais cela dépend de la résolution de l'écran j'.c.w. taille de l'écran et échoue, par exemple le HTC sensatoin avec 540x960.
Je sais que toutes les résolutions sont utilisés souvent, mais je tiens à soutenir autant que possible. Les Stats de Tailles et Densités d'Écran
J'ai lu Prise En Charge De Plusieurs Écrans plusieurs fois mais n'ai pas trouvé de réponse claire à ce "problème".
Dois-je donc la lecture de la résolution et réglez les paramètres conformément aux résolutions au lieu de la densité? Est-ce une chose intelligente à faire, ni comment faites-vous face à cela?
Merci beaucoup pour vos informations!
source d'informationauteur patrick
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas à le faire à l'appui de différentes densités. Ce que vous avez à faire est de créer les différentes ressources des dossiers:
Puis Android va décider de fichier à utiliser. Vous pouvez avoir quelque chose comme:
et..
etc. Et vous ne devriez pas vous soucier de la résolution... il y a beaucoup de résolutions différentes tailles de sorte qu'il serait un enfer pour prendre des décisions sur cette base.
Aussi, si vous utilisez
dp
au lieu de pixels, vous avez à peine jamais devrez créer différentes dimensions de fichiers pour chaque densité. Bien sûr, vous devez parfois, mais il dépend de l'application.Seule chose que vous avez à faire est, que vous définissez android:minSdkVersion à 7 ou plus dans votre fichier manifeste. Il est possible que certains points de vue apparaissent légèrement différente, mais l'app est
applicables et sur tout l'écran.
Maintenant, je suis juste deviner ici, puisque le reste de la mise en œuvre n'est pas montré, mais je suis en supposant que vous utilisez ceux issus des mesures
px
Prendre un coup d'oeil à
dp
. Que essentiellement fait toutes ces choses que vous avez fait, automatiquement, pour n'importe quel appareil. (Appareil Indépendant De Pixels)Ne vous inquiétez pas à propos de la légère différence de résolution: 540x960 est seulement légèrement plus grand que 480x800. Le supplément de l'espace vertical est facile: il vous donne plus d'espace pour vos listes. Pour l'espace horizontal, aussi longtemps que vous êtes la manipulation de vos mises en page correctement, vous devrez simplement un rembourrage supplémentaire (30pix ea) sur les côtés.
Malheureusement, pleine largeur images (480 large) sont un peu plus gros problème. Si vous voulez des pixels des images parfaites, vous aurez envie d'utiliser scaleType="center"afin que l'image des centres, mais pas échelles. Si vous voulez toute la largeur, vous pouvez utiliser scaleType="fitCenter" pour le faire remplir. Il sera un peu floue,..., mais alors beaucoup de chose sur Android 😉
Je suis tombé sur ce problème ainsi, à l'exception de mon application est un jeu où il y a une SurfaceView toile que je dessine des images de fond et des images-objets (similaire à LunarLander exemple).
La façon dont vous les manipulez est ici d'élargir votre image d'arrière-plan à la plus grande taille vous êtes prêt à soutenir (540x960) mais vous gardez toutes les choses importantes (comme des boutons, du texte, des informations, etc) à l'intérieur d'un rectangle plus petit de 480x800. Vous pouvez étendre l'image elle-même, ou tout simplement ajouter des bordures. La clé est que rien d'important n'est-il.
Personnes avec 480x800 téléphones verrez normal de votre application. Les gens avec 540x960 téléphones verrons un peu plus de frontière.