프로그래밍/Java, Android

안드로이드 뷰 캡슐화 전략 - 레이아웃 분리하여 관리하기

당근천국 2011. 4. 16. 13:13
이 글은 원래 네이버블로그에서 쓴글이라 태그문제때문에 xml파일을 이미지로 제공하고있습니다 ㅡ.-;;;;;


안드로이드에서 레이아웃관리는 다른 언어들에비해서 레이아웃 관리하기 힘든거 같습니다 ㅜㅡ
그래픽툴자체가 허접해서 그런걸수도 ㅎㅎㅎ;;
어찌됬건 안드로이드에서 레이아웃을 분리해서 관리하는 방법에 대해서 이야기 해보겠습니다.


 
1.일반적인 문제
보통 레이아웃은 한파일에 뭉쳐서 관리하는 경우가 많은데 이렇게 되면 아무래도 지저분 할수 밖에 없습니다.


꼴랑 3개짜리 레이아웃인데 깁니다.
물론 어떻게 해도 이렇게 배치된 코드는 가독성이 높아질수가 없저.

 
2. 레이아웃 분리하기
달랑 버튼 3개에 무슨 호들갑이냐 하겠지만 레이아웃 하나에 많은 뷰가 들어있다면 슬슬 가독성이 떨어지면서 난감해 지저-_-;
그래서 레이아웃을 자신이 관리하기 편한 만큼 분리하는게 좋습니다.


코드상으로는 양이 더 많아 젔습니다. ㅎㅎㅎ 시작태그와 끝테그가 더 있어야 하니까요.
그게 중요 한게 아니저
일단 이상해보여도 위와 같이 만들고...

 
3. 분리된 레이아웃을 기존 레이아웃에 추가하기


 



//메인 엑티비티의 기본 데이터를 생성
LayoutInflater vi = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//llTest1에 addView로 뷰를 추가 할수 있다.
llTest1.addView(vi.inflate(R.layout.lo_test, null));

코드를 돌려보면


두개가 같은 동작을 하고 있음을 알수 있습니다.



 
4. 응용을 해보자
여기서 뷰를 하나더 추가 하려면 어떻게 해야 할까요?
둘다 텍스트뷰를 추가해 봅시다.


두개의 레이아웃의 코드량에 따른 이득은 없습니다. 일반적으로 완전이 동일한 레이아웃을 똑같이 추가해서 쓸일은 거의 없으니 말입니다.
어찌됬건 왼쪽 일반적인 레이아웃 관리 방법은 뷰가 늘어남에 따라 관리가 힘들겠다는 느낌이 들것입니다.
특히나 탭뷰같은 것을 쓰게되면 코드는 걷잡을수 없이 복잡해 지저 ㅎㅎ

 
5. 클래스에서 레이아웃 추가하기
다른클래스에서도 레이아웃 추가가 가능합니다.
레이아웃 동적으로 추가하기