public class AndroidTest extends Activity {
/** Called when the activity is first created. */
private static final String TAG = "Log";
MyView vw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vw = new MyView( this );
setContentView( vw );
int cy = vw.getHeight();
int cx = vw.getWidth();
Log.i( TAG, "After setContentView cx = " + getHeight() + ", cy = " + getWidth() ); // 0 0 나옴
}
}
class MyViewextends View{
public MyView(Context context) {
super(context);
Log.i( TAG, "Constructor getWidth = " + getWidth() + ", getHeight = " + getHeight() ); // 0 0 나옴
}
...
protected void onDraw( Canvas canvas ){
Log.i( TAG, "onDraw getWidth = " + getWidth() + ", getHeight = " + getHeight() ); // 제대로나옴
...
코드는 대충 위에처럼 짯거든요..
일단 뷰의 크기를 알고싶은데요;;
궁금한건 getWidth() 메서드랑 getHeight() 메서드가 왜 제대로된 값을 가지게 되는 시점이 언제인가요??
제가 테스트를 한번 해보았는데요..
일단 View 클래스의 생성자에 넣어보았더니 로그에 0 0 이 나왔구요..
액티비티에서 setContentView 이후에 호출해봤지만 역시나 0 0 이나오구요;;
여기까진 이해가 되긴 하는데요 뷰가 화면을 체우지 않았으니 모르는건 당연한거 같은데
setContentView 가 호출된 직후에 나온 로그에서도 0 0 이 나오네요;;
제대로된곳은 View의 onDraw 에서만 제대로 나오네요..
onDraw가 적어도 한번은 호출되어야 제대로 뜨는건가요??ㅜㅠ;;
그럼 onDraw가 호출되기전에 화면을 가득 체운 뷰의 크기를 알 방법은 없는건가요??
고수님 답변 부탁드립니다..ㅠ 해상도에 맞게 제작하려고 하는데
그리기를 하기전에 크기를 알고 싶습니다.ㅠ 그래야 크기에 맞게 그릴텐데 말이죠ㅠㅜ
공지사항 읽었습니다...



