Répertoire d'articles
Système de coordonnées Android
Aperçu
Android dispose de deux systèmes de coordonnées, à savoir le système de coordonnées Android et le système de coordonnées de vue.
Système de coordonnées d'écran
Sous Android, le coin supérieur gauche de l'écran est considéré comme l'origine du système de coordonnées Android, l'origine vers la droite est la direction positive de l'axe X et l'origine vers le bas est la direction positive de l'axe Y.
Afficher le système de coordonnées
La vue a sa propre largeur et hauteur
méthode | Description |
---|---|
getHeight () | Obtenez la hauteur de la vue elle-même |
getWidth () | Obtenez la largeur de la vue elle-même |
Afficher ses propres coordonnées
méthode | Description |
---|---|
getTop () | Obtenir la distance entre le bord supérieur de la vue et le bord supérieur de sa disposition parent |
getLeft () | Obtenir la distance entre le côté gauche de la vue et le côté gauche de sa disposition parent |
getRight () | Obtenez la distance entre le côté droit de la vue et le côté gauche de sa disposition parente |
getBottom () | Obtenir la distance entre le bord inférieur de la vue et le bord supérieur de sa disposition parente |
Méthode MotionEvent
Méthode de coordonnées du point de contact
méthode | Description |
---|---|
getX () | La distance entre le point tactile et le côté gauche de la commande |
getY () | La distance entre le point tactile et le bord supérieur du contrôle |
getRawX () | La distance entre le point tactile et le côté gauche de l'écran |
getRawY () | La distance entre le point tactile et le bord supérieur de l'écran |
Obtenez avec précision la largeur et la hauteur des coordonnées de la vue
Parfois, nous devons obtenir View
la largeur et la hauteur, mais même si nous les onResume
introduisons, parfois ce n'est pas précis. Cela est dû au fait que le processus de mesure de View et la méthode de cycle de vie de Activity ne sont pas synchronisés, donc onCreate, onStart et onResume ne peuvent pas garantir que les informations correctes sont obtenues.
Alors, comment obtenir la View
largeur et la hauteur exactes?
Activité / Vue # onWindowFocusChanged ()
View a terminé l'opération d'initialisation, il sera appelé lorsque la fenêtre Activité obtient le focus et perd le focus.
Cette méthode sera appelée plusieurs fois.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
int top = imageView.getTop();
int left = imageView.getLeft();
int width = imageView.getMeasuredWidth();
Log.e("TAG", "onWindowFocusChanged: " + top + "-" + left + "-" + width);
}
}
Voir l'article()
Ajouté à la file d'attente des messages, la vue a terminé l'opération d'initialisation lorsque la tâche est exécutée.
imageView.post(new Runnable() {
@Override
public void run() {
int top = imageView.getTop();
int left = imageView.getLeft();
int width = imageView.getMeasuredWidth();
Log.e("TAG", "post: " + top + "-" + left + "-" + width);
}
});
ViewTreeObserver # addOnGlobalLayoutListener ()
Surveiller les changements d'état de l'arborescence de la vue.
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int top = imageView.getTop();
int left = imageView.getLeft();
int width = imageView.getMeasuredWidth();
Log.e("TAG", "getViewTreeObserver(): " + top + "-" + left + "-" + width);
}
});