티스토리 뷰


Android Googlemap의 Marker에 깜빡이는 애니메이션 효과를 주고싶어 직접 구현했습니다.


먼저 전체적인 코드를 보시겠습니다.



/*마커 깜빡임을 구현하는 함수*/ //직접구현
public boolean fadeMarker(final Marker marker) {
//Make the marker fade
final Handler handler = new Handler();
handler.post(new Runnable() {
float f;
int i = 2;
int timer;
@Override
public void run() {
if(i%2 == 0)
{
f = 1f;
}
else
f = 0f;
marker.setAlpha(f);
i++;
timer = timer + 300;
if(timer < RECOMMEND_MARKER_SHOW_TIME){
handler.postDelayed(this, 300);
}
else marker.remove();
}
});
return true;
}

구현원리는 0.3초마다 alpha값을 0과 1로 바꾸어가면서 깜빡이는 것 처럼 보이게 효과를 만들었습니다.


if(i%2 == 0)
{
f = 1f;
}
else
f = 0f;
marker.setAlpha(f);
i++;

이 부분을 보면 알 수 있겠지만 i = 2로 시작을 하고 i가 짝수이면 marker의 alpha값이 1 // i가 홀수이면 marker의 alpha값을 0으로 바꾸어줍니다. 그리고 루틴이 한번 돌때마다 i를 1씩 증가시켜서 깜빡이는 효과를 만드는것입니다.



timer = timer + 300;
if(timer < RECOMMEND_MARKER_SHOW_TIME){
handler.postDelayed(this, 300);
}
else marker.remove();

또 저는 마지막에 RECOMMEND_MARKER_SHOW_TIME보다 작을때까지는 계속 깜빡이는 효과를 주다가 그 이상의 시간이되면 marker를 지워버리는 효과를 추가해주었습니다. 


만약 마커가 지워지지 않고 계속 유지되어야 한다면 

handler.postDelayed(this, 300);

postDelayed를 통해서 0.3초 후에 다시 handler를 시작해주어서 반복적인 효과를 주시면 되겠습니다.




마커에 강조효과를 주고싶을때 뛰어난 효과를 발휘합니다 :)

댓글
댓글쓰기 폼