참고 : 본문내용중 width와 height가 0이 나왔다고 했는데, 테스트해보니
그 이유는 Activity의 onCreate에서는 동적인 크기지정(wrap_content, fill_parent)의 크기가
정해지기 전이기 때문에 0이 나왔던 것입니다. onSizeChanged가 Activity의 onCreate가 끝나고
발생되는 걸로 알수 있군요
위에 글은 전에 있던 질문을 어떻게 검색해서 찾아낸 것인데요. 잘 이해가 안되서 ㅠ_ㅠ 쫌 쉽게 설명쫌 부탁드립니다.
위에 이야기에 의하면 OnCreate 사이클때 크기를 못얻어온다는것인데. 그렇가면 onSizeChanged는
어느 사이클에서 실행이 되는 것인가요??
아래와 같이 작성할때도 똑같은 현상이 나오는데요. 예는 Activity 상속 클래스도 아니고 View로서
main.xml에 이 뷰 클래스를 집어 넣었습니다. 그렇다면 main.xml을 OnCreate메소드에서 setContentView
하기전에 뷰 생성자가 먼저 실행 된다는 이야긴가요!?
public class MoveImage extends View implements Runnable {
public MoveImage(Context context, AttributeSet attrs) {
super(context, attrs);
Image = this.getResources().getDrawable(R.drawable.robot);
Thread thread= new Thread(this);
thread.start();
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
viewWidth=this.getWidth();
viewHeight=this.getHeight();
imageWidth=Image.getIntrinsicWidth();
imageHeight=Image.getIntrinsicHeight();
x=0;
y=0;
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
protected void onDraw(Canvas canvas) {
Image.setBounds(x, y, x+imageWidth, y+imageHeight);
Image.draw(canvas);
super.onDraw(canvas);
}