안드로이드 개발 질문/답변
(글 수 45,052)
다음과 같은 View 클래스가 있습니다.
public class CompassView extends View { private float bearing; ... public void setBearing(float _bearing) { bearing = _bearing; } ... @override protected void onDraw() { ... //bearing 변수 사용 } }
이를 main Activity에서 다음과 같이 사용합니다.
public class CompassActivity extends Activity { @Override public void onCreate() { ... CompassView cv = new CompassView(this); setContentView(cv); cv.setBearing(45); cv.setBearing(15); } }
기본적으로 setContentView 메소드가 호출되면 onDraw메소드가 호출되는것 같은데요
위에서 View클래스 내의 setBearing 메소드를 호출하여도 onDraw메소드가 호출이 되는것 같네요.
찾아보니 onDraw메소드는 draw메소드가 호출될때 자동으로 호출이 된다고하는데,
draw는 setContentView와 무슨 관계가 있나요?
그리고 위에서 setBearing이라는 메소드를 호출하는데도 onDraw메서드가 호출되는 이유는 무었인가요?
2010.04.30 00:53:16
onDraw 함수는 말그대로 현재 있는 화면에서 덧대어 그리는 걸 말합니다. 쉽게 말해 그려진 그림위에 덧칠을 하는거죠. 그래서 setContentView 가 호출 된 후에 draw 액션이 자동적으로 되는 것이고 bearing 은 bearing 함수를 호출하면서 이벤트가 발생되어 그림에 변화가 생겼기 때문에 onDraw함수가 다시 호출이 되는겁니다. onDraw 함수는 뷰 위에서 발생되는 이벤트라 보시면 됩니다.