2014-06-17 3 views
2

저는 앱 개발을 처음 사용합니다. 기본적으로 저는 Google Developers 사이트의지도를 따라 내지도와 서클을 보여주었습니다 (탐색하는 동안 발견 한 마커와 원 애니메이션으로 주변을 둘러 보았습니다). 이제 내가 깜박 거리기 위해 만든 원/깜박임/깜박임이 필요합니다.하지만 무엇부터 시작해야할지 모르겠습니다. 내 서클을 깜박이는/깜박이는 방법 (Google Maps API V2 android)

내가이 페이지를 방문한

public class MainActivity extends ActionBarActivity { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    //marker 
    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    mMap.addMarker(new MarkerOptions() 
      .position(new LatLng(/*coordinates*/,/*coordinates*/)) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))); 

    //this doesn't work on my emulator  
    mMap.setMyLocationEnabled(true); 

    // Instantiates a new CircleOptions object and defines the center and radius 
    CircleOptions circleOptions = (new CircleOptions() 
      .center(new LatLng(/*coordinates*/,/*coordinates*/)) 
      .radius(1000) // In meters 
      //.fillColor(Color.GREEN) 
      .fillColor(0xff00bb00) 
      //.strokeColor(Color.GREEN)); 
      .strokeColor(0xff000000)).strokeWidth(2); 
    // Get back the mutable Circle, not sure what this means yet 
    Circle circle = mMap.addCircle(circleOptions); 

    //fiddling w/ circle animation 
    final Circle SFcircle = mMap.addCircle(new CircleOptions() 
      .center(new LatLng(/*coordinates*/,/*coordinates*/)) 
      .radius(100) 
      .strokeColor(Color.RED).radius(1000)); 

    ValueAnimator vAnimator = new ValueAnimator(); 
    vAnimator.setRepeatCount(ValueAnimator.INFINITE); 
    vAnimator.setRepeatMode(ValueAnimator.RESTART); /* PULSE */ 
    vAnimator.setIntValues(0, 100); 
    vAnimator.setDuration(1000); 
    vAnimator.setEvaluator(new IntEvaluator()); 
    vAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); 
    vAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator valueAnimator) { 
      float animatedFraction = valueAnimator.getAnimatedFraction(); 
      // Log.e("", "" + animatedFraction); 
      SFcircle.setRadius(animatedFraction * 1000); 
     } 
    }); 
    vAnimator.start(); 
} 

내 MainActivity.java입니다.

Blinking marker in android Google maps v2

- 난 (내가 원하고 있지 마커뿐만 아니라 위해 필요) 방법/제공 코드의 두 블록을 구현하는 경우 확실하지 않다. 비공개 GoogleMap mMap과 코드 상단 덩어리 인 vAnimator.start();에 메소드를 넣으려고했으나 오류가 발생했습니다.

How to show icon blinking on google map

-이 XML 파일이 아닌 자바 것 같다. 나는 확실하지 않지만 우리가 이미 우리의 폴더에 드로어 블 그림을 가지고 그들을 대체하는 것을 의미하는 것처럼 보인다. 전체 과정이 나에게 혼란 스럽습니다 (즉, 어떻게 작동할까요? 사진의 치수는 무엇입니까? 어디에서 사진을 찍고 어떻게 접근합니까?)

더 일반적인 질문이 있습니다. 만약 내가 애니메이션/디자인을 염두에두고 있다면, 어떻게 구체적으로 온라인으로 찾을 수 없다면 그것을 구현하기 시작하는 방법을 찾아야 할까?

+0

이것에 대해 어떤 진전을 보았습니까? Google 개발자 자습서에 대한 링크를 게시 할 수 있습니다. 다음을 참조하십시오. – Smalesy

+0

여기 링크가 있습니다! https : //developers.google.com/maps/documentation/android/start – mrtricity

+0

질문에 대한 해결책을 찾았습니까? –

답변

0

마커에 맥동 애니메이션을 추가하는 해결책을 발견했습니다. 여기에지도 부분이 있습니다. 여기에 변수 "지도"는지도를 나타냅니다.

private Circle lastUserCircle; 
private long pulseDuration = 1000; 
private ValueAnimator lastPulseAnimator; 

private void addPulsatingEffect(Latlng userLatlng){ 
      if(lastPulseAnimator != null){ 
       lastPulseAnimator.cancel(); 
       Log.d("onLocationUpdated: ","cancelled"); 
      } 
      if(lastUserCircle != null) 
       lastUserCircle.setCenter(userLatlng); 
      lastPulseAnimator = valueAnimate(userLocation.getAccuracy(), pulseDuration, new ValueAnimator.AnimatorUpdateListener() { 
       @Override 
       public void onAnimationUpdate(ValueAnimator animation) { 
        if(lastUserCircle != null) 
         lastUserCircle.setRadius((Float) animation.getAnimatedValue()); 
        else { 
         lastUserCircle = map.addCircle(new CircleOptions() 
           .center(userLatlng) 
           .radius((Float) animation.getAnimatedValue()) 
           .strokeColor(Color.RED) 
           .fillColor(Color.BLUE)); 
        } 
       } 
      }); 

} 
protected ValueAnimator valueAnimate(float accuracy,long duration, ValueAnimator.AnimatorUpdateListener updateListener){ 
     Log.d("valueAnimate: ", "called"); 
     ValueAnimator va = ValueAnimator.ofFloat(0,accuracy); 
     va.setDuration(duration); 
     va.addUpdateListener(updateListener); 
     va.setRepeatCount(ValueAnimator.INFINITE); 
     va.setRepeatMode(ValueAnimator.RESTART); 

     va.start(); 
     return va; 
    } 

희망이 있습니다.

관련 문제