본문 바로가기
Mobile : Android/Jetpack

[Jetpack Compose] Compose # 1 - 기본

by 신숭이 2021. 11. 6.

 

[Jetpack Compose] Compose # 1 - 기본

 

Jetpack Compose 란?

 

Jetpack 컴포스는 구글이 제시한 최신 선언형 UI 프레임워크이다.

 

 기존 레거시 뷰 체계는 앞으로 등장하게 될 다양한 기기들의 화면(폴더블, 플렉서블, 테블릿 등) 형태에 대응하기 어렵고, 이러한 레거시 라이브러리의 업데이트는 안드로이드 엔지니어들이나 이를 이용하여 개발하는 개발자 둘 다에게 비효율적이다. 따라서 구글에서는 완전히 새로운 Android UI 설계 프레임워크를 지난 21년 5월에 출시하였다. 

 

본 포스트는 Jetpack Compose 1.0 버전 기준으로 작성하였다.

 

 

Jetpack Compose 의 특징

  • API Level 21 부터 호환하여, 대부분의 안드로이드 OS 버전에 호환
  • 특정 OS에 의존하지 않아 업데이트가 매우 빠름
  • 선언형 프로그래밍 패러다임 적용 ( XML 을 사용하지 않음 )

 

 

기존 뷰 체계의 문제점

XML과 Activity는 각자의 State를 가지고 있고, 개발자는 이를 일치 시켜야

 기존 명령형/Event 중심 UI 구조의 문제는 뷰가 많고 뷰의 계층구조가 복잡해질 때, 개발자가 항상 XML 과 Activity/Fragment의 상태(State)를 일치시키는데 면밀한 집중을 요구했다. 때문에 개발자가 놓치는 부분에서 오류가 발생할 가능성이 늘 존재했고 이로인한 유지관리의 복잡성이 증가했었다.

* 여기서 상태(State)의 예시 : TextView 내의 text 값이나 Visibillity 값과 같은 것

 

 

 

Jetpack Compose 가 제시하는 기존 뷰 체계의 해법

컴포스는 XML없이 프로그래밍적으로 UI를 구현해 개발자가 코드 하나에만 집중할 수 있도록 하였고, 상태에 따라 UI를 업데이트 하는 구조이기에 개발자는 상태의 표현 방법에만 집중하면 된다. 프레임워크는 상태의 변화가 발생하는 부분에 대해서 즉각적으로 업데이트를 수행한다.

 

이 부분은 문서에 설명이 잘 되어있다.

 

아래와 같은 UI 컴포넌트를 만드는 Composable Function

 

 

Jetpack Compose 를 바로 적용해야하는가?

 

아직은 기존 View가 가진 강점(ExoPlayer, Map 등)을 전부 대체하진 못하기에, 당장 전부 전환할 필요는 없다. 이후 좀 더 많은 기능을 제공할 때 수행해도 충분하다. 그리고 아래와 같이 뷰와 컴포서블 컴포넌트는 혼용이 가능하다. 따라서 지금부터 부분적으로 적용해도 매우 잘 작동한다. 따라서 지금 시기에는 각 UI 프레임워크가 가지는 장점에 따라 선택적으로 사용하는게 좋을 것 같다.

 

 

 

 

참조

 

Compose 이해  |  Jetpack Compose  |  Android Developers

Compose 이해 Jetpack Compose는 Android를 위한 현대적인 선언형 UI 도구 키트입니다. Compose는 프런트엔드 뷰를 명령형으로 변형하지 않고도 앱 UI를 렌더링할 수 있게 하는 선언형 API를 제공하여 앱 UI를

developer.android.com

 

댓글