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

Composants graphiques Android Discussion :

Problème de superposition de boutons ajoutés dynamiquement


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Points : 52
    Points
    52
    Par défaut Problème de superposition de boutons ajoutés dynamiquement
    Bonjour,

    Je développe une application de réalité augmentée. Le principe : La caméra se lance en fond et j'y superpose des marqueurs correspondants à des lieux en fonction de leur coordonnées GPS.

    Par exemple, si je lance l'application et que je dirige la caméra du téléphone vers un bâtiment dont j'ai les coordonnées GPS, un marqueur s'affichera au niveau du bâtiment et suivra celui-ci lorsque je bougerai le téléphone.

    Le problème, c'est qu'il y a parfois plusieurs marqueurs superposés, par exemple si des bâtiments se trouvent l'un derrière l'autre.
    Je voudrais donc réussir à afficher les marqueurs les uns en dessous des autres s'ils se superposent.

    J'ai essayé avec un RelativeLayout superposé à ma vue de caméra, mais ça ne change rien.

    Voici le code de création des marqueurs :

    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
    16
    17
    18
    19
    20
    21
    @Override
    	public void onResume() {
    		super.onResume();
     
     
    			for(int j=0;j<markers.length;j++) {
    				//System.out.println(prefMarkers[j]);
    				if(markers[j] == null) {
     
    					RelativeLayout.LayoutParams rParams = new RelativeLayout.LayoutParams(
    							RelativeLayout.LayoutParams.WRAP_CONTENT,
    							RelativeLayout.LayoutParams.WRAP_CONTENT);
     
    						markers = new DataList(); // Ma liste de marqueurs
    						for(int i=0; i<markers.size();i++) {
    							markers[i].setOnClickListener(clickListener);
    								//addContentView(markers[j].get(i), params);
    								relative.addView(markers[j].get(i), rParams);
    						}
    					}
    				}}}
    Et la partie où je déplace mes marqueurs :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public final static void moveSpot(Context c, View tv, GeoPoint p,
    			float azimut, Location me, int screenWidth, float roll,
    			int screenHeight, float pitch) {
    		int angle = // Calculs
    		RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
    				FrameLayout.LayoutParams.WRAP_CONTENT,
    				FrameLayout.LayoutParams.WRAP_CONTENT);
     
                    lp.leftMargin = -angle * screenWidth / 90;
     
    		lp.addRule(RelativeLayout.ABOVE);
     
    		tv.setLayoutParams(lp);
    	}
     
    	public SensorEventListener createListener() {
    		return new SensorEventListener() {
    			public void onAccuracyChanged(Sensor _sensor, int _accuracy) {
     
    			}
     
    			public void onSensorChanged(SensorEvent evt) {
    				if (evt.sensor.getType() == Sensor.TYPE_ORIENTATION && markers != null) {
     
    					for(int j=0;j<markers.length;j++)
    						moveSpot(context, markers[i], markers[i]
    										.getGeoPoint(), azimut, myLoc,
    										mScreenWidth, roll, mScreenHeight, pitch);
     
    			}
    		};
    	}
    Je m'y prend sans doute pas de la bonne manière, mais voyez-vous comment je pourrais faire ?

    Merci d'avance,

    Aenur56

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Points : 79
    Points
    79
    Par défaut FrameLayout
    Un FrameLayout permet il me semble de superposer plusieurs éléments dans une vue. Ils s'alignent tous sur le coin supérieur gauche.

    <FrameLayout>
    <RelativeLayout>
    <!-- Place the objects you want on the bottom here -->
    </RelativeLayout>


    <RelativeLayout>
    <!-- Place the objects you want on the top here -->
    </RelativeLayout>
    </FrameLayout>

    Je ne sais si cela peut t'aider.
    Cordialement

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2009, 14h23
  2. [Boutons animés] Problèmes de superposition de layers
    Par anaxa_gore dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 27/02/2008, 14h44
  3. Ajouter dynamiquement un bouton
    Par toure32 dans le forum Delphi
    Réponses: 2
    Dernier message: 16/04/2007, 23h40
  4. Jframe : Problème de "superposition" image de fond / bouton SUITE
    Par NicolasGuyomar dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 18/03/2007, 13h06
  5. Jframe : Problème de "superposition" image de fond / bouton
    Par lottie dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 15/03/2007, 08h35

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