이번 어플을 제작하면서 가로,세로 모드를 지원하려 합니다.
구글링과 책을 검색해 보면서 안드로이드에서 가로세로 지원쪽을 보다가 해결이 안되어 질문을 올립니다.
페이지의 레이아웃은 리니어 레이아웃안에 바둑판 형식으로 이미지뷰들이 있도록 구성되어 있습니다.
총 보여주고 싶은 이미지의 갯수가 예를 들어 12개라고 하면 세로 모드 일때는 (3*4) 형식으로 보여주고..
가로 모드 일때는 (4*3)형식으로 보여주려 합니다.
총 보여주고 싶은 이미지의 갯수가 고정이 아니라 동적이라서 xml에서 정의가 불가능 하여 소스단에서 해결을 해야 하는데요..
onConfigurationChanged 함수를 이용하여 가로 일때와 세로 일때를 구분하여 소스에서 다음과 같이 구현 하였습니다.
int xmlCnt = 12; //보여주여야 할 총 이미지 갯수
private void layoutView(int line) {
int newline = ((xmlCnt / line) + (xmlCnt % line));
LinearLayout rlayout = (LinearLayout) findViewById(R.id.plist_content_llayout);
for(int i=0;i<newline;i++){
LinearLayout llayout = new LinearLayout(this);
for(int j=0;j<line;j++){
ImageView img = new ImageView(this);
img.setBackgroundResource(R.drawable.paper_bg);
llayout.addView(img);
}
rlayout.addView(llayout);
}
}
위와 같이 가로 모드 일때는 layoutView(4);를 불르게 세로 모드일때는 layoutView(3);을 불르게 하여 레이아웃을
재정의 하려 했습니다. 테스트 결과 세로 모드과 가로 모드는 변환이 되는데, 레이아웃이 갱신이 되지 않습니다..
그래서 혹시나 하고 위의 코드를 스레드를 이용하여 처리도 해보았으나 결과는 마찬가지 였습니다..
혹시 참고할 만한 사이트나 다른 구현 방식이 있으면 조언 부탁드립니다...




자답입니다..
removeAllView();...를 넣어주니 정상적으로 뷰 갱신이 되네요..-_-;;