안드로이드 개발 질문/답변
(글 수 45,052)
while(조건)
{
while(조건)
{
customView cv = new customView(this); <---화면에 표시할 커스텀뷰
layout.addView(cv);
}
}
이렇게 했는데 , onDraw() 가 , 마지막 한번만 그려집니다..
도움 부탁드려요..
2011.07.04 12:20:27
Log를 찍어보세요... 아마 1,2,3,4,5,6,7,8 모두 onDraw가 타기는 탈것같은데
결과적으로 최종적으로 루프를 돈 8만 보여지는게 정상인듯 합니다..
이와 관련해서 책(안드로이드 프로그래밍 정복/한빛미디어)에서 본적이 있는데..
page 663 : ............ 루프 내부에서 setText를 호출하여 결과를 출력하지만 아직 메서드가 리턴을 하지 않았기 때문에 화면을 그릴 기회가 없는 것이다./ 라고 되어있습니다...
그래서 해결책은 핸들러를 사용하는것이였습니다..
책에서는 for문에서 i가 0부터 100까지 증가하며 단순 슬립메소드로 딜레이를 약간씩 주어 1씩 증가하는 것을
표현하고자 하였지만 실행하면 100이 출력될 뿐.. 1~100의 과정이 안보이는 것이죠.
그래서 for문을 handler로 옮기고. for문이 있던 자리에는 handler를 호출해주어서 해결하였네요.
oniz님도 invalidate 호출을 handler로 옮기고, invalidate 호출했던 자리에 hanlder 호출을 하면 결과가 어떻게 될지요...? 궁금하네요..




마지막에 한번이라는게 무슨의미인지는 잘모르겠지만 해당 조건처리와 관련된 부분에서 해당뷰의 invalidate()를 호출하는건 해보셨는지요?