안녕하세요 푸민입니다.
스프라이트 애니메이션은 게임 개발에서 많이 사용하는 애니메이션입니다!
사진은 한컷 한컷 돌려가며 마치 움직이는 것처럼 보여주는 애니메이션입니다 ㅎㅎ
안드로이드에서 스프라이트 애니메이션을 한번 적용해볼까요?
준비물 : 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;
}
}
}
'Development > Android' 카테고리의 다른 글
[안드로이드] 터치이벤트, 핀치 인 아웃 드래그 제어 (0) | 2015.08.24 |
---|---|
[안드로이드] Api level 19 Package Index 요약 (0) | 2015.08.13 |
[안드로이드] Location 정보 가져오기 (0) | 2015.08.09 |
[안드로이드] 커스텀 View 만들기 (0) | 2015.08.08 |
[안드로이드] 메모리 관리용 Null 처리 (0) | 2015.08.07 |
댓글