brunch

You can make anything
by writing

C.S.Lewis

by 윤형도 Mar 08. 2016

빠르게 배우는 안드로이드 -20
Fragment-1

Fragment의 배경을알아보자

지금 까지 강의를 통해서 기본적인 안드로이드 sdk에서 지원하는 
api를 사용할수 있게되었습니다.
오늘은 Fragment를 배워볼것인데요 Fragment는 한글로는 파편, 조각이라는 의미로 해석되는데요 최근 안드로이드에서 가장 중요하게 사용되는 api입니다. Activity와 거의 비슷한 기능을 수행하는 클래스라고 생각하시면 편합니다. 그렇다면 비슷한 기능을 수행하는 클래스인데 왜 등장하게 되었을까요?

(지금 부터 나오는 Fragment 등장에 대한 설명은 저의 지극히 주관적인 생각입니다.)

잠깐 안드로이드에 대한 역사를 보도록합시다.
Fragment는 안드로이드 허니컴(3.0)버전에서 처음 선보인 기능입니다. (이전은 2.2 버전 프로요)허니컴은 태블릿용 즉 대화면용 안드로이드 OS버전으로 설계되었습니다. 화면이 커지다보니 한 화면에 한 엑티비티만을 보여주기에는 너무 비효율적이라는 생각이 들었나봅니다.

그렇다면 한 화면에 2가지 기능을 보여주면 어떨까요? 
예를 들어
1. 왼쪽에는 메뉴가나오고 오른쪽에는 앱 기능이 동작한다거나
2. 왼쪽에는 인터넷 사이트가 오른쪽에는 채팅기능이 동작한다고 생각해봅시다.    

http://developer.android.com/intl/ko/guide/components/fragments.html

이런기능들은 어떻게 만들수 있을까요?

지금까지 배운것으로 생각해보면 한 화면에 리어어 레이아웃 등을 2개로 배치해서 각각 기능을 넣어주면 되지 않나요? 아니면 커스텀 뷰 2개를 만들어서 리니어에 넣으면 코드재사용도 되고 좋을것 같은데요?

라는 생각을 가질수있습니다. 이 또한 틀린 방법은 아니고 좋은 생각입니다. 하지만 안드로이드 개발팀에서는 여기서 재사용등을 염두하여 약간 다른 생각을 하게됩니다. 
엑티비티를 2개 한 화면에 띄우면 되겠다. 라는 생각을 하게 되었습니다. 이렇게하면 각각의 Activity를 인텐트 등으로 호출하여 2개를 보이게하면 되고 관리도 쉽겠네? 라는 생각을 했던것같습니다. 하지만 기존에 Activity 클래스는
한 화면을 담당하는 클래스였고 이 안에 Activity들을 넣는 기능을 추가하는것은 구조를 많이 변경해야됬나봅니다. 변경을하면 하위 OS에 있는 것들과 호환이 잘되지 않을수있기 때문에 Activity는 그대로 두고 Activity를 본 딴 새로운 클래스(기능)을 만들게 됩니다 . 그것이 바로 Fragment입니다.
 거의 구조적 기능적으로 Activity와 동일한 기능을 가진것으로 생각하고 코딩하시면 될것같습니다. 
다음 강의부터 Fragment에 대한 코드를 보면서 Fragment를 알아보도록하겠습니다.

매거진의 이전글 빠르게 배우는 안드로이드 -19 Intent -5
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari