google 地图 api ANDROID 中标记的 GIF 类型动画
GIF type animation for marker in google map api ANDROID
我想实现一个标记动画,比如GIF动画。我得到了两个应该同时闪烁的图像。我在 android 中找不到任何可以实现此目的的东西。我想做的是,每 1 秒创建一个 运行 的处理程序,并且我正在尝试为标记设置图标。但它不起作用。请指引我正确的方向。
我的代码如下。
Handler handler = new Handler();
Boolean marker_color_bool = true;
//adding marker and sending the marker instance to marker_animation() method where handler is called.
MarkerOptions marker = new MarkerOptions()
.title(delivery_center_name)
.snippet("This is the " + delivery_center_name + " location")
.position(location)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.red_marker));
google_map.addMarker(marker);
marker_animation(marker);
marker_animation() 方法
private final int ONE_SECONDS = 1000;
public void marker_animation(final MarkerOptions marker ) {
handler.postDelayed(new Runnable() {
public void run() {
Log.e("running",""+marker_color_bool);
if(marker_color_bool == true)
{
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.green_marker));
marker_color_bool = false;
}
else
{
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.red_marker));
marker_color_bool = true;
}
handler.postDelayed(this, ONE_SECONDS);
}
}, ONE_SECONDS);
}
这种方法不起作用..请帮我看看我做错了什么。
Please help me what I am doing wrong
您正在修改不再使用的对象。一旦 addMarker()
被调用,MarkerOptions
对象就没有进一步的意义,但这就是您通过 postDelayed()
逻辑修改的内容。
(顺便说一句,您不需要 Handler
,因为 postDelayed()
可用于任何 View
)
addMarker()
returns一个Marker
。您将需要使用 Marker
来影响您的更改,通过 setIcon()
.
此外,由于您的位图没有改变,我建议缓存您的两个 BitmapDescriptor
对象,而不是每次都重新创建它们。
我想实现一个标记动画,比如GIF动画。我得到了两个应该同时闪烁的图像。我在 android 中找不到任何可以实现此目的的东西。我想做的是,每 1 秒创建一个 运行 的处理程序,并且我正在尝试为标记设置图标。但它不起作用。请指引我正确的方向。
我的代码如下。
Handler handler = new Handler();
Boolean marker_color_bool = true;
//adding marker and sending the marker instance to marker_animation() method where handler is called.
MarkerOptions marker = new MarkerOptions()
.title(delivery_center_name)
.snippet("This is the " + delivery_center_name + " location")
.position(location)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.red_marker));
google_map.addMarker(marker);
marker_animation(marker);
marker_animation() 方法
private final int ONE_SECONDS = 1000;
public void marker_animation(final MarkerOptions marker ) {
handler.postDelayed(new Runnable() {
public void run() {
Log.e("running",""+marker_color_bool);
if(marker_color_bool == true)
{
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.green_marker));
marker_color_bool = false;
}
else
{
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.red_marker));
marker_color_bool = true;
}
handler.postDelayed(this, ONE_SECONDS);
}
}, ONE_SECONDS);
}
这种方法不起作用..请帮我看看我做错了什么。
Please help me what I am doing wrong
您正在修改不再使用的对象。一旦 addMarker()
被调用,MarkerOptions
对象就没有进一步的意义,但这就是您通过 postDelayed()
逻辑修改的内容。
(顺便说一句,您不需要 Handler
,因为 postDelayed()
可用于任何 View
)
addMarker()
returns一个Marker
。您将需要使用 Marker
来影响您的更改,通过 setIcon()
.
此外,由于您的位图没有改变,我建议缓存您的两个 BitmapDescriptor
对象,而不是每次都重新创建它们。