본문 바로가기
Android Studio/Android

Android Compose UI 기초

by ksb0511 2023. 8. 22.

안드로이드에서 Compose UI가 나온 지 좀 됐다.

 

플러터 UI 개발 방식과 유사한 Android Jetpack의 ComposeUI는 선언형 프로그래밍 방식이다.

비슷한 방식으로

- Flutter

- SwiftUI

가 있다고 보면 된다.

 

또한 Compose는 Material 디자인을 지원한다. 즉, 구글의 기본적인 디자인을 지원한다는 것.

ToolBar 이런 거를 기본적으로 쓸 수 있다.

 

먼저 컴포저블에 대해 알아보자면

다음 코드에서 보다시피 컴포즈를 쓸때 선언해 주는 것이다.

Compose UI의 구조에 대해 쉽게 본다면 그냥 트리 구조같다고 보면된다.

 

기존에 많이 썼던 xml의 ConstraintLayout은 트리구조가 아닌 뷰와 뷰를 상대적으로 상호연결하는 구조라 빠른 것으로 알고 있다.

(물론 개발자도 편함)

 

하지만 ComposeUI는 더 빠른 성능을 지녔다고 한다.

공식문서에 나와있는 Compose의 장점은 다음과 같다.

1.코드 감소
2.직관적
3.빠른 개발 과정
4.강력한 성능

.

사실 엄청나게 와닿지는 않았지만 굳이 하나씩 본다면

1. 코드 감소 <- 당연히 xml이 없어지니까 줄어듦

2. 직관적 <- 말그대로 상당히 직관적이긴 함. 어렵지 않은 것이 말 그대로 TextView, Button 이런 식으로 쓸 수 있음

3. 빠른 개발 과정 <- 러닝 타임은 다소 있겠지만 kt파일에서 ui 개발과 기능 개발을 한다는 부분에서 유리하다고 생각함. 실제로 익숙해지니 저 좋았던 부분인 것 같음

4. 강력한 성능 <- 속도가 빠르다고 합니다...

 


설명으로만 보면 체감이 덜 할 것 같으니 예시를 들어봤다.

내가 이전에 리사이클러뷰를 개발할 때 사용한 방식들이다. 어댑터, 뷰홀더...

뷰홀더를 이용해 뷰를 붙잡고 있어야 하고 어댑터로 뷰와 데이터를 연결해주고.. 코드가 다소 난잡해지기 쉬웠다.

 

그렇다면 컴포저블로 했을 때에는

다음과 같았다. LazyColumn을 사용하면 되고, 컴포저블의 경우에 상태 변화를 필요한 부분만 바꿀 수 있기 때문에 확실히 이런 Stateful한 UI의 경우 개발하기 편했던 것 같다.

 

 이 외에 컴포지션 재활용, 상태 호이스팅에 대해서도 잘 해놓은 것 같아서 Compose 쓰는 것에 더 익숙해지면 좋겠다고 생각을 했다.

(추후에 포스팅)

 

Android Jetpack Compose UI를 공부하면서 느꼈던 점들

1. 사용할 수 없는 라이브러리들 존재 : Glide, Picaso, View Pager

2. Resource 관련 부분 사용 불가

3. Preview 기능이 아직 느린 속도를 지님

4. 단방향 아키텍처 흐름 권장

5. Remember 사용하여 비용이 많이 드는 계산 최소화하는 것이 중요할 것 같음 - 계산 결과를 저장하도록 하는 것

6. 반복되는 레이아웃에 키를 적용하여 불필요한 재구성 피하기

 

 

 

Compose UI가 계속 발전하고 있는 것 같으니 계속 jetpack 문서를 참고하는 것이 중요할 것 같다.

댓글