안드로이드 개발 질문/답변
(글 수 45,052)
public void tDraw(Canvas canvas)
{
// p 초기화
Paint p1 = new Paint(); // 남은 시간 그리기
p1.setColor(Color.RED);
tWidth = tWidth - 2;
r.set(0, 0, tWidth, 20);
canvas.drawRect(r,p1);
}
while(runGame){
while(!endTime()){
//Log.i("Log","endTime: "+(endTime()));
canvas = holder.lockCanvas(); // canvas를 잠그고 버퍼 할당
try{
synchronized(holder) // 동기화 유지
{
tDraw(canvas); // 여기서 tDraw 호출
}
}finally // 버퍼 작업이 끝나면
{
if(canvas != null) // 버퍼의 내용을 View에 전송
holder.unlockCanvasAndPost(canvas);
}
}
} // 쓰레드 while문 끝
}
어제부터 붙잡다가 도저히 무엇을 잘못했는지 모르겠어서 질문올립니다 ㅠㅠ
저는 draw함수가 호출될 때마다 rect의 right값을 1씩 빼서 그림을 그리려고 하였습니다.
그런데 결과는 원래 rect right 가 200이라고 하면 199, 200, 199, 200....이런씩으로
그려집니다. 분명 tWidth는 클래스에 선언된 변수로 초기화도 전혀 되지 않을텐데..
그리고 로그값을 찍어보면 분명 tWidth는 착실하게 1씩 빼지고 있습니다.
도저히 무엇이 문제인지 모르겠습니다.ㅜㅜㅜㅜㅜㅜㅜ
제가 무엇을 잘못한걸까요ㅠㅠ?




저도 하수라 잘 모르겠지만 저건 드로우가 여러번 새로 실행되어서
200 199 198 197 196
200 199 198
200 199
이런식이 아닌가 싶은데..
제가 한 것중에 계속 변하는 애니메이션같은 경우에는
뷰를 상속받아서 일정 시간마다 값을 변경하면서
invalidate()만 하면 자동으로 onDraw에서 새로 그리던데요.