谷歌地图api ANDROID中标记的GIF类型动画

San*_*p R 10 android google-maps google-maps-markers android-handler google-maps-android-api-2

我想实现一个标记动画,如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);
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用.请帮助我,我做错了什么.

Com*_*are 5

请帮助我,我做错了什么

您正在修改不再使用的对象.一旦addMarker()被调用,该MarkerOptions对象就没有其他意义,但这是您通过postDelayed()逻辑修改的内容.

(顺便说一句,你不需要Handler,如postDelayed()任何可用View)

addMarker()返回一个Marker.您将需要使用它Marker来影响您的更改,通过setIcon().

此外,由于您的位图没有变化,我建议缓存您的两个BitmapDescriptor对象,而不是在每次传递时重新创建它们.