프레그먼트의 디자인 철학(Design Philosophy)
태블릿과 같은 큰 화면에서 동적이면서 유연성있는 UI 디자인을 지원하기 위해 안드로이드 3.0(API Level 11)부터 프레그먼트를 지원한다. 태블릿은 스마트폰보다 화면 사이즈가 크기때문에 UI 요소를 통합하거나 교체할 수 있는 여유 공간이 있다. 프레그먼트는 뷰계층의 복잡한 변경을 관리하지 않고도 화면을 설계할 수 있게 해준다. 액티비티의 레이아웃을 프레그먼트 단위로 나눌 수 있게되면서 우리는 런타임시에도 액티비티의 외관을 변경할 수 있고 또한, 변경된 내용을 액티비티가 관리하는 백스택으로 보존할 수도 있게 되었다.
예를 들면, 뉴스 앱에서 왼쪽 프레그먼트에는 뉴스 목록을, 오른쪽에는 해당 기사 내용을 보여줄 수 있다. 자세히 설명하면 두 프레그먼트를 하나의 액티비티에서 나란히 보여주고 각각의 프레그먼트는 자신의 생명주기 콜백함수를 정의해서 사용자 입력 이벤트를 직접 처리할 수 있다. 그래서, 아래 그림과 같이 한 액티비티에서는 뉴스 목록을 보여주고 다른 액티비티에서 선택된 뉴스 기사를 보도록 구현하는 대신 사용자는 목록을 선택하고 같은 액티비티에서 바로 기사를 읽도록 구성할 수 있다.
프레그먼트로 정의된 두 개의 UI 모듈이 태블릿에서는 결합된 형태로, 스마트폰에서는 분리된 형태로 보여주는 예시
[이미지 출처 : http://developer.android.com/guide/components/fragments.html#Design]
앱이 태블릿에서 실행될 때는 액티비티A에 두 개의 프레그먼트를 넣을 수 있다. 반면에 스마트폰에서는 공간의 여유가 없기 때문에 액비티비A에는 뉴스목록을 위한 프레그먼트만 넣고 사용자가 항목을 선택했을 때 액티비티B를 띄우면서 그 안에 뉴스 기사를 위한 프레그먼트를 넣도록 구현한다. 결과적으로 앱은 다양한 결합방법을 통해 프레그먼트를 재사용해서 태블릿과 스마트폰을 동시에 지원할 수 있다.
'Android' 카테고리의 다른 글
[번역글] 프레그먼트 #3 - 프레그먼트 만들기(Creating a Fragment) (2) | 2014.01.14 |
---|---|
google-play-services_lib 업데이트 후, 죽는 문제 (3) | 2014.01.13 |
[번역글] 프레그먼트 #1 - 프레그먼트(Fragments)란? (0) | 2014.01.08 |
[번역글] Supporting Different Screen Sizes #1 - 최소너비 식별자(Smallest-width Qualifier) 사용하기 (0) | 2014.01.08 |
[Android] Activity Jump #2 "액티비티 스택에 없었던 메인액티비티로 이동하기" (0) | 2012.01.30 |