如何在谷歌地图上显示图标闪烁

时间:2011-07-18 06:22:34

标签: android google-maps animation

我想在Google地图上显示用户的当前位置。每件事对我来说都很好。我只是用标记在地图上显示当前位置。现在我想让那个标记像在Android手机上的原始谷歌地图应用程序一样闪烁。我想我必须为此目的使用动画,但我不知道如何使用它。我在互联网上搜索它,但我没有得到任何解决方案。请任何人帮助我.....

3 个答案:

答案 0 :(得分:4)

状态栏上的Android GPS图标使用以下逻辑闪烁。保持两个drawables一个沉闷的图像和一个明亮的图像。在特定时间内更改它们,看起来图像会闪烁。

<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>

答案 1 :(得分:0)

这正是你需要的

http://www.wiseandroid.com/post/2010/08/10/Making-a-simple-custom-Android-UI-animation.aspx

我希望你理解代码。 注意这个陈述:

t.setAlpha(Math.abs(FloatMath.cos(period)));

我认为您必须对其进行编辑,使其从1更改为0,然后从0更改为1 ...等等

答案 2 :(得分:0)

由于标记本身不是视图,因此似乎不可能使用animate框架。

所以,下面的方法(虽然边缘粗糙)可以工作,尽管有意义保持它的重点:     - 它不会停止(只需添加一个标志来检查其他地方的设置)     - 您希望在下一个标记点​​击时取消它以避免在同一标记上多次运行

假设您有对标记的引用(例如,使用onMarkerClick回调),并且您正在UI线程上执行。使用标记alpha设置并将其向下或向上(在此示例中为0.1步)从1.0到下限(在此示例中为0.5)

   // 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);

......以及类定义中的其他地方

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);
    }
}

注意你可以在run()中做不同的事情,比如&#34; spin&#34;标记使用 轮换属性:

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

操纵(或组合)的其他可能属性:     - 锚定点 - 如果巧妙地完成,这将导致它摆动     - 可见性 - 使其显示/消失(可能令人讨厌)