버튼 크기나 이미지뷰를 구해서 저장해놓아야 할 때가 있는데 이걸 OnCreate에서 한번만 하도록 하고 싶지만 거기에 넣어두면 실제 구현이 되지 않은 상태라 사이즈가 전부 0으로 나온다.
그렇다고 실제 값이 필요할때 마다 구하는것도 좀 아닌거 같고 그럴때 쓰는게 post 함수
@Override protected void onCreate(Bundle savedInstanceState) { m_imgViewGraph = (ImageView) findViewById(R.id.imageViewGraph); Log.d("linsoo", "width1=" + m_imgViewGraph.getWidth()); m_imgViewGraph.post(new Runnable(){ @Override public void run() { Log.d("linsoo", "width2=" + m_imgViewGraph.getWidth()); } }); }
결과는 width1 = 0 width2 = 실제 넓이 이렇게 됨.
post함수를 쓰면 메세지큐에 실행할거를 추가해준다고 함 그럼 메세지큐가 돌기 시작하면서 그때 그 부분을 처리함 그래서 create 단계가 아닌 메세지큐 단계라 이미지뷰라던지 버튼이 전부 실체화 된 상태이기 때문에 값을 구할수 있는것.
답글 남기기