2010-12-15 7 views
2

Je passe par la documentation de plusieurs écrans de soutien sur l'Android et besoin de clarification. Je crois comprendre que la conception de trois interfaces uniques (ldpi, mdpi et hdpi) serait la meilleure façon de prendre en charge tous les écrans android potentiels.Android: Comment afficher IMAGE pour différentes résolutions d'écran/taille par programmation

mais je crois que cela serait vrai lorsque vous faites cela pendant la conception. Mais si vous créez une vue pendant l'exécution par programmation et que vous voulez définir une image d'arrière-plan, est-ce que ce qui précède reste vrai?

i essaie de tirer un bitmap sur une toile en utilisant suivante,

canvas.drawBitmap (BitmapFactory.decodeResource (getResources(), R.drawable.image_1), 0, 0, NULL); dans ma vue personnalisée en étendant SurfaceView, puis en utilisant cette vue dans mon activité principale.

maintenant j'utilise image_1.png qui est 480 * 800 pixels en utilisant gimp. Si j'utilise cette image dans le code ci-dessus, elle ne s'affiche pas correctement et l'image apparaît plus grande, c'est-à-dire que l'image apparaît trop grande pour l'écran et ne peut donc pas afficher le contenu complet.

pouvez-vous s'il vous plaît conseils quelle est la meilleure approche à suivre à ce sujet?

grâce, --ad

+0

merci pour la réponse. donc cela signifie que j'ai besoin de créer l'image selon les dpi suivants, -ldpi est ~ 120dpi, -mdpi est ~ 160dpi, -hdpi est ~ 240dpi.et ne pas avoir à vous soucier de la taille de l'image? Je voulais dire avec le dpi ci-dessus à l'esprit, je peux créer une image de toute taille et Android prendrait soin de cela lors de l'affichage dans l'appareil? - – adad

Répondre

0

See. Placez l'image dans chacun des 3 dossiers avec différentes tailles et résolutions, à savoir hdpi, ldpi et mdpi. Et vous pouvez appeler l'image de cette façon:

R.drawable.image_name 

Ne vous inquiétez pas android prendra soin et grand écran ouvrira son hdpi où, comme dans les petits écrans, il ouvrira l'image de LDPI. Lorsque vous définissez, la hauteur et la largeur utilisent dp comme unité au lieu de pixels.

+0

merci pour la réponse. donc cela signifie que j'ai besoin de créer l'image selon les dpi suivants, -ldpi est ~ 120dpi, -mdpi est ~ 160dpi, -hdpi est ~ 240dpi. et ne pas avoir à vous soucier de la taille de l'image? Je voulais dire avec le dpi ci-dessus à l'esprit, je peux créer une image de toute taille et Android prendrait soin de cela lors de l'affichage dans l'appareil? – adad

+0

Ouais. la création -ldpi est ~ 120dpi, -mdpi est ~ 160dpi, -hdpi est ~ 240dpi la taille des images les montrera selon la résolution. Je n'ai pas besoin de m'inquiéter à ce sujet. –

0

Hmm, je ne suis pas trop familier avec cette méthode de DrawBitmap, mais je ne vois cela dans la documentation:

« Si le bitmap et la toile ont des densités différentes, cette fonction se chargera de mise à l'échelle automatiquement le bitmap dessiner à la même densité que la toile. "

Il existe des méthodes getDensity et setDensity sur Bitmap pour que vous puissiez appeler getDensity pour voir de quoi il s'agit, puis expérimenter avec setDensity, avant que drawBitmap ne voit si cela peut vous aider. Remarque: Canvas possède également une méthode getDensity. Vous pouvez donc l'imprimer dans le journal et voir si la définition de la densité Bitmap à la même valeur évite le problème de mise à l'échelle. Il y a aussi la méthode: drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint), qui indique dans la documentation: "Cette fonction ignore la densité associée au bitmap, car les espaces de coordonnées du rectangle source et du point de destination ont leurs densités respectives. facteur d'échelle approprié appliqué. "

+0

merci pour la réponse. donc cela signifie que j'ai besoin de créer l'image selon les dpi suivants, -ldpi est ~ 120dpi, -mdpi est ~ 160dpi, -hdpi est ~ 240dpi. et ne pas avoir à vous soucier de la taille de l'image? Je voulais dire avec le dpi ci-dessus à l'esprit, je peux créer une image de toute taille et Android prendrait soin de cela lors de l'affichage dans l'appareil? - – adad

Questions connexes