IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupérer position sur l'écran


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Par défaut Récupérer position sur l'écran
    Bonjour,
    j'ai une pièce (style tetris) que je peux déplacer partout sur mon écran, j'aimerais initialiser sa position X,Y à la même qu'une autre image (ImageView), sur 2 appareils virtuels, ça marche. Or j'ai un écart de 0.5cm pour le Y quand je teste avec mon téléphone connecté. Ca fait un petit moment que je cherche la solution mais je ne trouve pas. J'ai remarqué que lorsque la position de "l'autre image" change, la position de la pièce reste toujours à 0.5cm d'écart en Y.

    Voila comment je crée, initialise la position de la pièce:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ImageView im = new ImageView(this);
    im.setImageResource(colorIm);
    im.setScaleType(ImageView.ScaleType.FIT_XY);
    im.setAdjustViewBounds(true);
    im.setLayoutParams(new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,ActionBar.LayoutParams.WRAP_CONTENT));
    im.getLayoutParams().height = SIZE_SQUARE;
    im.getLayoutParams().width = SIZE_SQUARE;
    relativeLayout.addView(im);
    im.bringToFront();
     
    int[] img_coordinates = new int[2];
    ImageView grid = findViewById(R.id.grid);
    grid.getLocationOnScreen(img_coordinates);
    im.setX(img_coordinates[0]);
    im.setY(img_coordinates[1]);
    Partie du layout concernant l'autre image: grid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <ImageView
                android:id="@+id/grid"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/grid"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:layout_centerHorizontal="true"
                />
    Partie du layout où la pièce "im" est rajoutée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <RelativeLayout
            android:id="@+id/listPieces"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:orientation="horizontal">
        </RelativeLayout>
    Si vous avez une idée de ce que ça pourrait être je suis tout ouïe.

    PS: Je suis presque sûre que c'est un histoire avec les layout (dans un relativelayout ca donnera pas la même chose ou c'est une position relative etc.). mais je ne sais pas comment je pourrais gérer cela.

    Merci.

  2. #2
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Par défaut UP
    UP: le parent de l'imageview id=grid est lui, un enfant direct au RelativeLayout racine. Et quand je place ma pièce à la position de ce parent (avec getY()), elle se place bien à l'endroit ou ce trouve ce parent !!
    J'y suis presque...

    Je viens de lire ça sur un autre forum:
    So after much much research I finally solved the issue. What i had was a GridView and couple of LinearLayout all wrapped up inside a relativeLayout and I used getLocationOnScreen() to get the coordinates of a cell in the gridView so I could put view over it, for some reason there was always a fixed value difference in Y axis that varies in different device densities, finally I put the GridView inside a relativeLayout alone so it is the only child and used getX() getY() which get the coordinates inside the direct parent of a view, the result was just what I wanted and I didn't even have to count for different density screens. Hope this will help someone who may encounter the same issue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la position x et y d'un clic sur l'écran
    Par macRiaz dans le forum Android
    Réponses: 0
    Dernier message: 14/03/2010, 22h46
  2. Réponses: 1
    Dernier message: 31/05/2009, 18h23
  3. Réponses: 1
    Dernier message: 30/05/2007, 11h54
  4. [c++] Obtenir la position d'une fenêtre sur l'écran
    Par Silverstone dans le forum Windows
    Réponses: 2
    Dernier message: 05/09/2006, 16h11
  5. Position d'une fenêtre sur l'écran (left, top)
    Par Daimonji dans le forum MFC
    Réponses: 9
    Dernier message: 18/12/2005, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo