2011-07-11 1 views
1

J'ai une classe d'activité MapImageViewer qui a des méthodes pour vérifier l'emplacement des téléphones GPS. Cette activité appelle ensuite une vue personnalisée de la mienne appelée MapCanvas - où le constructeur prend la latitude et la longitude, puis trace un cercle vers les pixels correspondants sur une image d'une carte.onLocationChanged appelez la méthode onDraw dans ma vue personnalisée

Cela fonctionne bien, mais je me demande comment puis-je mettre à jour et appeler la méthode onDraw chaque fois que les coordonnées GPS changent? Je sais qu'il doit aller dans la méthode onLocationChanged..mais je ne suis pas sûr comment je peux passer les nouvelles valeurs de latitude et de longitude de là à ma classe de vue personnalisée.

Répondre

0

appel de méthode invalidate() chaque fois que vous obtenez de nouvelles coordonnées de la vue (ou postInvalidate() si le LocationListener est dans un thread différent du thread d'interface utilisateur)

+0

Je ne vois pas comment appeler la méthode d'invalidation des vues (ou postInvalidate) fera quoi que ce soit. –

+0

Il indique au système d'exploitation de redessiner la vue appelant ainsi la méthode onDraw() de la vue ainsi que toute autre préparation en coulisse que le système d'exploitation doit effectuer. invalider est comment vous forcez dessiner une vue. – DeeV

+0

J'ai essayé de mettre cela dans ma méthode onLocationChanged et cela n'a pas fonctionné. MapCanvas = new MapCanvas (MapImageViewer.this, myMapImagePath, latitude, longitude); setContentView (mapCanvas); mapCanvas.invalidate(); –

0

Qu'en est-il l'envoi de latitude/longitude de la méthode onLocationChanged() en utilisant .sendBroadcast() et la poignée les dans votre classe View avec un BroadcastReceiver?

Vous pouvez également utiliser une méthode de rappel de LocationListener comme indiqué dans this.

+0

n'est pas sendBroadcast() et receiveBroadcast() utilisé lors de la création d'intentions? Dans mon cas, je règle ma vue de contenu sur ma vue personnalisée ... et dans la classe Vue personnalisée, je dois passer les nouvelles valeurs longues/lat .. et appeler onDraw à chaque changement. –

Questions connexes