Development/Android

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

푸민 2015. 8. 11. 10:19
반응형

 

안녕하세요 푸민입니다.

 

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

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

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

 

준비물 : 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;
        }
    }
}

 

 

반응형