안녕하세요. JAVA 와 안드로이드 개발을 처음 접하는 초보입니다.
첫 번째 질문.
일반적으로 게임과 같이 여러 이미지들을 자유자재로 화면에 그리려면 Thread를 생성하고, Thread 의 run() -> while loop 안에서
canvas에 bitmap을 그리는 방식을 사용하는것 같더군요.
그래서 위와 같이 기본 App. 프레임을 만들고, run()의 while loop에서 호출되는 함수(show_bitmaps())를 작성했습니다.
함수의 목적은 10장이상의 bitmap을 화면에 그려주는데, 한꺼번에 그리는게 아니라 한장씩 그림이 추가되는 것을
사용자가 알 수 있게 천천히 그려 주는 것이죠(예전 SKT의 LTE폰 광고에서 네개의 네모가 하나씩 쿵, 쿵, 쿵, 쿵 도장 찍히는 것처럼..ㅋ)
show_bitmaps() { // 설명을 위해 주요 코드들만 간략히 붙였어요
Canvas canvas = null;
for ( i = 0 ; i < 10 ; i++){
canvas = mySurfaceHolder.lockCanvas();
canvas.drawBitmap(bitmap[i] ....)
Thread.sleep(100);
mySurfaceHolder.unlockCanvasAndPost(canvas);
} //end for
}
--> 이와 같이 했더니 10장의 bitmap 중 일부만 보입니다...
그래서 아래와 같이 수정했더니..
show_bitmaps() { //
Canvas canvas = null;
canvas = mySurfaceHolder.lockCanvas();
for ( i = 0 ; i < 10 ; i++){
canvas.drawBitmap(bitmap[i] ....)
Thread.sleep(100);
} //end for
mySurfaceHolder.unlockCanvasAndPost(canvas);
}
이번엔 10장의 카드가 다 그려진 상태로 화면에 출력됩니다. 원하는 건 한장씩 그림이 그려지는 것을 보여주고 싶은데요.
첫 번째 케이스에서 왜 일부의 bitmap만 보여지는지 궁금합니다.
두 번째 질문.
위의 두번째 함수로 화면에 그림을 다 그리고 난 후, 역시 run() 의 while () loop에서 다른 이벤트를 받으면 위 10개의 그림
위에 새로운 bitmap을 그리려고 역시 lockCanvas(), drawBitmap(), unlockCanvasAndPost()를 순서대로 호출하니까
앞서 10개의 bitmap은 모두 사라지고 마지막에 추가한 한장의 bitmap만 보입니다.
기존 10개의 이미지는 유지한 채 새로운 bitmap을 추가하려면 어떻게 해야 하나요?
기초적인 질문인 것 같은데 답을 찾기 어렵네요. -_-;
답변에 미리 감사합니다.




canvas.drawBitmap(bitmap[i] ....) 이런식으로 계속 추가 하면 오버랩 되어서
결국 한번에 그린거처럼 보이게 되므로 캔버스를 새로 그리시던가
비트맵에 마스킹을 하시던가 해야 합니다.
시간상 캔버스를 새로 그리시는게 더 빠르겠네요..