8

Я хочу добиться анимации маркера, такой как анимация GIF. Я получил два изображения, которые должны мигать одновременно. Я не нашел ничего, что может быть достигнуто в андроиде. Я пытаюсь сделать это, создав обработчик, который запускается каждые 1 секунду, и я пытаюсь установить значок для маркера. Но это не работает. Пожалуйста, направляйте меня в правильном направлении.анимация типа GIF для маркера в google map api ANDROID

мой код на данный момент выглядит следующим образом.

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); 
} 

этот подход оленья кожа work..Please помочь мне, что я делаю неправильно.

+0

Было бы лучше, если бы люди объяснили причину, почему вопрос был отклонен. Чтобы я, как и другие люди, мог понять и научиться эффективно задавать вопрос. Спасибо .. :-) –

+0

Можете ли вы разместить свое решение этого ответа? –

+0

@PabloCegarra Я использую Marker вместо опций маркера. Маркер = новый маркер(). а также имеет setIcon, который изменяет значок в обработчике анимации из вышеуказанного кода. –

ответ

5

Пожалуйста, помогите мне, что я делаю неправильно

Вы изменяете объект, который больше не используется. Как только addMarker() вызывается, объект MarkerOptions не имеет никакого значения, но это то, что вы изменяете с помощью логики postDelayed().

(кстати, вам не нужен Handler, поскольку postDelayed() доступен на любом View)

addMarker() возвращает Marker. Вам нужно будет работать с этим Marker, чтобы повлиять на ваши изменения, с помощью setIcon().

Кроме того, поскольку ваши растровые изображения не меняются, я предлагаю кешировать ваши два объекта BitmapDescriptor, а не создавать их на каждом проходе.

+1

yup наконец-то я решил его использовать маркер вместо markoptions, а также marker.seticon. –

+0

Я хочу индикатор загрузки внутри этого изображения маркера, и мое изображение маркера - это пользовательское изображение, как я могу это сделать? – neena

+0

@neena: Если по индикатору загрузки вы имеете в виду что-то анимированное, это не поддерживается. – CommonsWare