안드로이드 개발 질문/답변
(글 수 45,052)
@Override
protected void onDraw(Canvas canvas) {
Log.d(TAG, "===== OnDraw===="+ check);
this.canvas = canvas;
if(!check)
{
canvas.drawRect(rectBG, paintBG);
canvas.drawRect(rectFG, paintFG);
canvas.drawText("Delete All", rect.left+((rect.right-rect.left)/4), rect.top-v.getHeight()-15, paint);
check=!check;
}
else if(check)
{
canvas.
rectBG.set(0, 0, 100, 100);
canvas.drawRect(rectBG, paintFG);
canvas.drawLine(0, 0, 100, 100, paint);
}
super.onDraw(canvas);
}
위와 같이 메소드를 만들고 터치 다운이 되면 if(!check) 터치 업이 되면 else가 실행되도록 구현하였습니다.
로그를 찍어보니깐 if와 else if 두 구문 모두 호출이 되는데...else에서 그림 그림이 갱신이 되질 않내요..
그래서 else에 invalidate를 호출하니깐 원하는 동작은 하는데 무한루프 돌고...
여기서 질문 있습니다.
onDraw()가 호출되면 그림을 다시 그리는 거 아닌가요??
대체 canvas에 새로운 그림을 그렸는데 갱신이 안되는 이유가 뭘까요??
답변 좀 부탁드리겠습니다.
protected void onDraw(Canvas canvas) {
Log.d(TAG, "===== OnDraw===="+ check);
this.canvas = canvas;
if(!check)
{
canvas.drawRect(rectBG, paintBG);
canvas.drawRect(rectFG, paintFG);
canvas.drawText("Delete All", rect.left+((rect.right-rect.left)/4), rect.top-v.getHeight()-15, paint);
check=!check;
}
else if(check)
{
canvas.
rectBG.set(0, 0, 100, 100);
canvas.drawRect(rectBG, paintFG);
canvas.drawLine(0, 0, 100, 100, paint);
}
super.onDraw(canvas);
}
위와 같이 메소드를 만들고 터치 다운이 되면 if(!check) 터치 업이 되면 else가 실행되도록 구현하였습니다.
로그를 찍어보니깐 if와 else if 두 구문 모두 호출이 되는데...else에서 그림 그림이 갱신이 되질 않내요..
그래서 else에 invalidate를 호출하니깐 원하는 동작은 하는데 무한루프 돌고...
여기서 질문 있습니다.
onDraw()가 호출되면 그림을 다시 그리는 거 아닌가요??
대체 canvas에 새로운 그림을 그렸는데 갱신이 안되는 이유가 뭘까요??
답변 좀 부탁드리겠습니다.