Système de coordonnées de vue d'Android View

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

Insérez la description de l'image ici

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

Insérez la description de l'image ici

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 Viewla largeur et la hauteur, mais même si nous les onResumeintroduisons, 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 Viewlargeur 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);
    }
});

Je suppose que tu aimes

Origine blog.csdn.net/qq_14876133/article/details/113127313
conseillé
Classement