我想在Google地图上显示用户的当前位置。每件事对我来说都很好。我只是用标记在地图上显示当前位置。现在我想让那个标记像在Android手机上的原始谷歌地图应用程序一样闪烁。我想我必须为此目的使用动画,但我不知道如何使用它。我在互联网上搜索它,但我没有得到任何解决方案。请任何人帮助我.....
答案 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);
操纵(或组合)的其他可能属性: - 锚定点 - 如果巧妙地完成,这将导致它摆动 - 可见性 - 使其显示/消失(可能令人讨厌)