2012-07-23 9 views
3

Une des activités de mon application Android a une disposition relative avec deux images, qui sont définies dans un fichier de mise en page XML. Comment puis-je obtenir par programmation x, y emplacement des images vuesComment obtenir les coordonnées x, y

Ces coordonnées seront-elles différentes selon la taille et la densité de l'écran?

Ce que je veux faire, c'est que l'utilisateur touche l'image1 qui sera ensuite animée pour passer à l'emplacement de l'image2. De toute évidence, depuis que j'ai placé ces images dans le xml, je connais leurs coordonnées x, y, mais je crains que ces coordonnées varient en fonction de la taille de l'écran et de la densité.

+0

et quelle sera la position de l'image2? – SALMAN

+0

Lorsque vous placez le 'ImageView' en XML, assurez-vous que vous utilisez 30dp au lieu de 30px. Vérifiez ici ce que cela signifie: http://stackoverflow.com/questions/2025282/difference-of-px-dp-dip-and-sp-in-android –

Répondre

8

Vous pouvez utiliser View.getTop(), View.getBottom(), View.getLeft(), and View.getRight(). Ceux-ci renverront l'emplacement du bord top, bottom, left and right de la vue par rapport au parent.

+0

Comme par ce post http://stackoverflow.com/a/20991950/2162226, la vue doit avoir été réellement rendu afin que les méthodes fonctionnent correctement: * "Vous avez besoin de votre vue ajoutée à une mise en page et affiché (Au moins une passe de mise en page et une passe de mesure doivent avoir été exécutées.) "*. Merci pour le solt! – gnB

0

Comment obtenir x et y

int[] t = new int[2]; 
int[] cordinatesofImageView1 = imageView1.getLocationOnScreen(t); 


int[] cordinatesofImageView2 = imageView2.getLocationOnScreen(t); 

Vous devez ajuster votre contrôle w.r.t de la taille de l'écran et est le lien ici que comment pouvez-vous détecter.

Determine device screen category (small, normal, large, xlarge) using code

OU

Vous pouvez vous référer à cette réponse cela peut vous aider.

Interchange location of two views

Merci :)

+0

Il n'y a pas getX, getY méthodes sur un imageView. C'est getTop, getLeft, getBottom, getRight comme Jason le décrit dans sa réponse ci-dessous. – Tori

+0

Désolé pour la gêne occasionnée J'ai édité mon code, cette fois ça va sûrement vous aider. Merci :) – SALMAN

Questions connexes