谷歌地图api ANDROID中标记的GIF类型动画
我想实现一个标记动画,比如GIF动画。我得到了两个应该同时闪烁的图像。我在安卓系统中找不到任何可以做到这一点的东西。我正在尝试做的是,创建一个每1秒运行一次的处理程序,并尝试设置标记的图标。但它不起作用。请把我引向正确的方向 我现在的代码如下谷歌地图api ANDROID中标记的GIF类型动画,android,google-maps,google-maps-markers,google-maps-android-api-2,android-handler,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,Android Handler,我想实现一个标记动画,比如GIF动画。我得到了两个应该同时闪烁的图像。我在安卓系统中找不到任何可以做到这一点的东西。我正在尝试做的是,创建一个每1秒运行一次的处理程序,并尝试设置标记的图标。但它不起作用。请把我引向正确的方向 我现在的代码如下 Handler handler = new Handler(); Boolean marker_color_bool = true; //adding marker and sending the marker instance to marke
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()方法
这种方法行不通,请帮我找出我做错了什么
请帮帮我,我做错了什么
您正在修改不再使用的对象。一旦调用了addMarker()
,则MarkerOptions
对象就没有进一步的意义,但这是您通过postDelayed()
逻辑修改的内容
(顺便说一句,您不需要处理程序
,因为postDelayed()
在任何视图上都可用)
addMarker()
返回一个标记。您需要通过setIcon()
使用该标记来影响更改
另外,由于位图没有改变,我建议缓存两个BitmapDescriptor
对象,而不是每次都重新创建它们。如果人们在评论中给出问题被否决的原因,那会更好。这样我和其他人都能理解并学会如何有效地提问。谢谢…-)你能把你的答案贴到这个答案上吗?@PabloCegarra我用的是Marker而不是Marker选项。Marker=新标记()。还有setIcon,它可以改变动画处理程序中的图标。你找到解决方案了吗?@Regis_AG是的,请为我的解决方案找到上面的注释。是的,最后我用marker而不是markeroptions解决了这个问题,还有marker.setIcon。我希望在这个标记图像中有一个加载指示器,我的标记图像是一个自定义图像,我该怎么做?@neena:如果说“加载指示器”,你指的是不受支持的动画。是的,我需要动画说明加载,如果不受支持,我该怎么做?@neena:我想你的进度指示器应该在其他地方。
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);
}