如何在Google地图上显示闪烁的图标

7

我希望能在谷歌地图上显示用户的当前位置。目前一切工作正常,我只是使用标记来显示地图上的当前位置。现在我想让这个标记像安卓手机上原始的谷歌地图应用程序一样闪烁。我认为我需要使用动画来实现这个目的,但我不知道如何使用它。我在网上搜索,但没有找到任何解决方案。请有人帮帮我......


https://dev59.com/AFTTa4cB1Zd3GeqPuaqC#5113730 - ingsaurabh
3个回答

6

Android 状态栏上的 GPS 图标会使用以下逻辑闪烁。保留两个可绘制对象,一个是暗淡图像,一个是明亮图像。在一定时间间隔内更改它们,这样看起来就像图像在闪烁。

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

@Vinoth:我猜这只适用于ImageView,没有办法使用覆盖物进行动画。你有没有任何方法可以使用OverlayItem进行动画呢?非常感谢您的帮助。 - kaushal trivedi
1
如何以编程方式实现这个功能,@Vinoth? - Sarah cartenz

0

0

由于标记本身不是一个视图,因此似乎不能使用动画框架。

因此,以下方法(尽管有些粗糙)可以工作,但为了保持重点:    -它不会停止(只需在其他地方设置检查标志即可)    -您将希望在下一个标记单击上取消它,以避免在同一个标记上多次运行

假设您有对标记的引用(例如使用onMarkerClick回调),并且正在执行UI线程。 使用标记的alpha设置,并将其从1.0减少或增加(在此示例中以0.1步长)到较低限制(在此示例中为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()中执行不同的操作,例如使用旋转属性“旋转”标记:

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

其他可能要操作的属性(或组合): - 锚点 - 如果聪明地使用,这将导致它摆动 - 可见性 - 使其出现/消失(可能很烦人)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接