본문 바로가기
Development/Android

[안드로이드] Sprite Animation 적용해보기!

by 푸민 2015. 8. 11.
반응형

 

안녕하세요 푸민입니다.

 

스프라이트 애니메이션은 게임 개발에서 많이 사용하는 애니메이션입니다!

사진은 한컷 한컷 돌려가며 마치 움직이는 것처럼 보여주는 애니메이션입니다 ㅎㅎ

안드로이드에서 스프라이트 애니메이션을 한번 적용해볼까요?

 

준비물 : Sprite Sheet

Sprite Sheet는 스프라이트 애니메이션을 만들수 있도록 그림을 쭉 정렬해 놓은 이미지 파일입니다!

구글에서 검색해보면 상당히 많은 테스트 자료를 구할 수 있습니다.

 

1. 먼저 클래스를 하나 생성 후 이미지뷰를 상속 받습니다. 그리고 필요한 변수를 선언합니다.

 

public class SpriteView extends ImageView {

 

private Bitmap[] mBitmapList;
 
private Timer timer;
 
private int count;
private int mTime;
 
private boolean isRun;

 

}

 

 

2. 스프라이트 시트를 설정할 수 있는 메소드를 만들어 줍니다.

 

public void setBitmapList(Bitmap bitmap, int frameNum, int time) {
    mBitmapList = new Bitmap[frameNum];
    int width = bitmap.getWidth() / frameNum;
    int height = bitmap.getHeight();
    for (int i = 0; i < frameNum; i++) {
        mBitmapList[i] = Bitmap.createBitmap(bitmap, (i * width), 0, width, height);
    }
    count = 0;
    mTime = time;
}

 

 

3. 스프라이트 애니메이션이 동작될 수 있는 타임테스크를 만들어 줍니다.

 

private class SpriteTimer extends TimerTask {
    @Override
    public void run() {
        handler.sendEmptyMessage(0);
    }
}

 

Handler handler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        super.handleMessage(msg);
        setImageBitmap(mBitmapList[count]);
        count++;
        if (count == mBitmapList.length) {
            count = 0;
        }
    };
};

 

 

4. 그리고 애니메이션 시작과 종료 메소드를 생성해주면 끝!

 

public void startAni() {
    if (!isRun) {
        isRun = true;
        if (timer == null) {
            timer = new Timer();
            timer.schedule(new SpriteTimer(), 0, mTime);
        }
    }
}

 

public void stopAni() {
    if (isRun) {
        isRun = false;
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }
}

 

 

반응형

댓글