Je vais essayer d'obtenir l'absolu pixel de l'écran, les coordonnées de l'angle supérieur gauche de la vue. Cependant, toutes les méthodes que je peux trouver comme getLeft()
et getRight()
ne fonctionnent pas comme ils semblent tous être par rapport au parent de la vue, ce qui me donne le 0
. Quelle est la bonne façon de le faire?
Si cela peut aider, c'est pour une " mettre l'image en arrière dans l'ordre de jeu. Je veux que l'utilisateur soit capable de dessiner une zone de texte pour sélectionner plusieurs morceaux. Mon hypothèse est que la meilleure façon de faire c'est-à - getRawX()
et getRawY()
de la MotionEvent
, puis de comparer ces valeurs contre le coin supérieur gauche de la disposition de la tenue de la pièces. La connaissance de la taille des pièces, je peux alors déterminer combien de pièces ont été sélectionnés. Je me rends compte que je peux utiliser getX()
et getY()
sur le MotionEvent
, mais qui renvoie à une position relative qui fait de déterminer quelles pièces ont été sélectionnées plus difficile. (Pas impossible, je le sais, mais il semble inutilement compliqué).
Merci!
Edit: C'est le code que j'ai utilisé pour essayer d'obtenir la taille du contenant, selon l'une des questions. TableLayout
est la table qui contient toutes les pièces du puzzle.
TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
Log.d(LOG_TAG, "Values " + tableLayout.getTop() + tableLayout.getLeft());
Edit 2: Voici le code que j'ai essayé, à la suite de plusieurs des réponses suggérées.
public int[] tableLayoutCorners = new int[2];
(...)
TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
tableLayout.requestLayout();
Rect corners = new Rect();
tableLayout.getLocalVisibleRect(corners);
Log.d(LOG_TAG, "Top left " + corners.top + ", " + corners.left + ", " + corners.right
+ ", " + corners.bottom);
cells[4].getLocationOnScreen(tableLayoutCorners);
Log.d(LOG_TAG, "Values " + tableLayoutCorners[0] + ", " + tableLayoutCorners[1]);
Ce code a été ajouté après l'initialisation est terminée. L'image a été divisé en un tableau de ImageViews (les cellules de tableau []) contenues dans une TableLayout
. Les cellules[0] est le premier à gauche ImageView
, et j'ai pris des cellules[4], comme il est quelque part au milieu et plus certainement ne devrait pas avoir de coordonnées (0,0).
Le code ci-dessus me donne encore tous les 0s dans les journaux, je ne comprends vraiment pas parce que les différentes pièces du puzzle sont correctement affichées. (J'ai essayé public int pour tableLayoutCorners et de visibilité par défaut, les deux donnant le même résultat.)
Je ne sais pas si c'est significatif, mais l' ImageView
s sont à l'origine n'a pas de taille. La taille de l' ImageView
s est déterminé lors de l'initialisation automatiquement par la Vue lorsque je lui donne une image à afficher. Cela pourrait-il contribuer à leurs valeurs de 0, même si ce code d'enregistrement est après qu'ils ont été donné une image et ont automatiquement redimensionnée eux-mêmes? Pour éventuellement contrer cela, j'ai ajouté le code tableLayout.requestLayout()
comme indiqué ci-dessus, mais cela n'a pas aidé.
Je suis perplexe... Merci encore à tous ceux qui peuvent aider.