2011-07-18 17 views
5

Quiero mostrar la ubicación actual del usuario en el mapa de Google. Todo está funcionando bien para mí. Solo estoy usando un marcador para mostrar la ubicación actual en el mapa. Ahora quiero hacer que ese marcador parpadee como en la aplicación original de Google Maps en Android móvil. Creo que tengo que usar animación para este propósito, pero no sé cómo usarlo. Lo estoy buscando en internet, pero no estoy obteniendo ninguna solución. Alguien me ayude por favor .....Cómo mostrar el icono que parpadea en el mapa de Google

+0

http://stackoverflow.com/questions/5113652/marker-blinking-on -google-map-in-android/5113730 # 5113730 – ingsaurabh

Respuesta

4

icono de GPS para Android parpadea en la barra de estado mediante el siguiente lógica. Mantenga dos dibujables uno con imagen opaca y uno con imagen brillante. Cámbialos a cierta duración y se verá como si la imagen estuviera parpadeando.

<animation-list 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:oneshot="false"> 
    <item android:drawable="@drawable/dull" android:duration="10000" /> 
    <item android:drawable="@drawable/bright" android:duration="10000" /> 
</animation-list> 
+0

Hola, Vinoth cómo usar este código. por favor dame un ejemplo –

+0

@Vinoth: supongo que esto funciona solo con la vista de imagen y no hay manera de que puedas hacer animación con superposiciones. ¿Tienes alguna forma de hacer animación con overlayitem? Cualquier ayuda será apreciada. –

+0

¿Cómo a esto programáticamente @Vinoth? –

0

Desde el marcador en sí no es una vista parece utilizando el marco animado no es una posibilidad.

Por lo tanto, el enfoque siguiente (aunque áspero alrededor de los bordes) funciona bien en el interés mantenerla en el punto: - no se detiene (sólo añadir una bandera para Verific en otro lugar) - usted querrá cancelarlo en el siguiente clic de marcador para evitar ejecutar varias veces en el mismo marcador

Supongamos que tiene una referencia a un marcador (por ejemplo, utiliza la devolución de llamada onMarkerClick) y se está ejecutando en el hilo de la interfaz de usuario. Utilice el ajuste marcadores alfa y el paso hacia abajo o hacia arriba (en pasos de 0,1 en este ejemplo) de 1,0 a un límite inferior (0,5 en este ejemplo)

// Assume I have a marker reference 'm', e.g. from a onMarkerClick 

    // .. in context of onMarkerClick for example 
    //  change the '500' (millis) to adjust the blinking rate. 
    new Handler().postDelayed(new AnimateMarker(m, 0.5F, 0.1F), 500); 

... y en clase a otra parte definir

public class AnimateMarker implements Runnable { 

    float tgtalpha; 
    float delta; 

    private Marker m; 
    public AnimateMarker (Marker m, float tgt, float delta) { 
     this.m = m; 
     this.tgtalpha = tgt; 
     this.delta = delta; 
    } 

    @Override 
    public void run() { 
     float a = m.getAlpha(); 
     if (a <= tgtalpha || a >= 1.0F) { 
      delta *= -1.0F; 
     } 
     a += delta; 
     m.setAlpha(a); 


     new Handler().postDelayed(new AnimateMarker(m, tgtalpha, delta), 500); 
    } 
} 

Tenga en cuenta que puede hacer cosas diferentes en el run() como "giro" el marcador mediante el uso de la propiedad de rotación:

 // modified snippet of 'run' method 
     float a = m.getRotation(); 
     if (a >= 350.0) { 
      a = 0; 
     } else { 
      a += 10.0F; 
     } 
     m.setRotation(a); 

Otras propiedades posibles de manipular (o combinat iones): - punto de anclaje - esto hará que se mueva si se hace inteligentemente - visibilidad - haga que aparezca/desaparezca (probablemente sea molesto)

Cuestiones relacionadas