2011-01-04 2 views
0

Je crée un jeu en plein écran. J'utilise une image pour le fond et je dessine des images dessus. L'image d'arrière-plan est superbe dans tous les appareils, mais je ne peux pas dessiner les images de superposition au même endroit sur tous les appareils.Afficher l'image au même endroit sur plusieurs écrans | Android

Par exemple, si j'utilise

canvas.drawBitmap(overlay, 365, 85, paint);

Il alignera l'image parfaitement pour les téléphones qui ont 854px largeur. Mais rien de plus bas que ça va être poussé vers la droite.

J'ai essayé de jouer avec dip mais je n'arrive pas à comprendre cela. Y a-t-il un endroit où je peux m'assurer qu'ils sont correctement alignés sur toutes les résolutions?

+0

Vous devez transmettre les coordonnées x, y en fonction de la taille de l'écran du périphérique et non d'une valeur const. – Sandy

Répondre

1

Si vous voulez faire comme ça, vous devez probablement calculer la position en fonction de la taille de l'écran.

Vous pouvez trouver ces utiliser quelque chose comme ceci:

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    wPix = dm.widthPixels; 
    hPix = dm.heightPixels; 
+0

Donc je devrais mettre en place une instruction switch pour chaque taille d'écran? – Dave

+0

Selon la raison pour laquelle la position est modifiée, je pense que vous pourriez être en mesure de faire une sorte de calcul. A titre d'exemple: Si vous positionnez votre image toujours au centre horizontalement, vous aurez besoin d'un écran fictif de 200 pixels de largeur à l'emplacement '100'. Pour 500, vous voulez '250', etc. Mais au lieu d'un commutateur, vous utiliserez bien sûr "width/2". Quelque chose de similaire pourrait être possible pour ce cas? – Nanne

+0

Peut utiliser un ratio tant que vous êtes prudent avec votre arrondi afin que les choses ne soient pas en désordre, mais concevez vos mises en page pour une résolution spécifique, et lorsque l'écran est rendu à cette résolution, vous redimensionner la position (et peut-être la taille si c'est important aussi) pour être plus approprié. – James

1

Je devine que vous ciblez 1.6 ou supérieur. La raison pour laquelle votre arrière-plan semble correct sur tous les appareils est qu'Android adapte automatiquement les ressources à la densité de l'écran cible lorsque vous les décodez. Vous pouvez éviter cela en plaçant vos ressources dans "drawable-nodpi" à la place (vous devrez créer ce répertoire,) ou en passant les options appropriées aux fonctions de bitmap de décodage (consultez la documentation.) Si vous faites cela, vous Je vais devoir redimensionner tous vos bitmaps manuellement. Les deux autres réponses ont la bonne idée, saisissez la taille de votre écran et calculez toutes les valeurs de pixels. N'utilisez jamais de constantes.

Questions connexes