본문 바로가기

안드로이드

컴포즈 스터디 1차 Compose 이해

Compose 이해

구글문서의 Compose 이해 문서를 요약한 내용이다.

Compose 의 소개

영상의 도입부에서 컴포즈에대해서 대략적인 소개를한다.

Compose는 선언형 UI 프레임워크로

UI가 표시해야할 상태값을 관리하면 이를 컴포즈가 핸들링하는 형식이란다.(데이터 바인딩도 마찬가지 아닌가?)

이는 기존 뷰를 다루는 방식과 굉장히 다르다고 한다.

그래서 그 다른점과 어떤 관점으로 컴포즈를 다뤄야하는지 이 동영상에서 다뤄본다고 한다.

컴포즈 답게 생각하기(Thinking in Compose)

뷰를 사용한다면 xml 작성후 어떤방식으로든 뷰를 찾아와서 setter를 통해서 원하는 값을 지정해준다고 한다.(누가 요즘 이런방식으로해 너무 억까아님? 물론 set하는걸 숨기고 하지만 그건 컴포즈도 마찬가지자나....)

 

컴포즈를 사용하면 일단 xml 짤필요없이 코틀린코드로 다 해결가능하다고 한다.(그대신 코틀린 코드 짜야하자나... 뭐가 다른데)

코틀린써서 좋다고 한다.

 

Construct UI by describing what not how

-> 명령형이 아닌 선언형으로 코드를 짤수 있다는것을 설명하고있다.

이것이 컴포즈가 직관인 이유라고 한다. (선언형 좋은건 인정)

이런 요소를 xml과 컴포즈로 만드는것을 비교한다.

 

view

진짜 구형방식으로 억까하는 모습을 보여준다. 어떻게든 뷰체계를 안좋게 보이게하려 노력한다.

 

compose

xml 대신 코틀린으로 작성하기 때문에 코드랑 xml사이 왔다갔다 할필요도 없고 참조를 얻을 필요도 없다.

또한 컴포즈는 함수이다 생성된 객체가 아니다. -> 참조값을 타고 들어가서 값을 변경해주고 이런것들이 아니라 매개변수를 통해 상태를 전달, 변경한다.

상태값을 어떻게 전달하는가가 중요하다.

 

그래서 컴포즈는 선언형 답게

어떤 상태를 그려야하는지 전달할뿐 어떻게 그릴지 명령하지는 않는다고 한다.(그냥 선언형 이야기)

 

UI 를 업데이트하기 위해 상태는 어떻게 업데이트 시키는가?

이벤트를 이용하여 상태를 업데이트 한다고한다.

 

 

그냥 우리가 생각했던 클릭리스너 같은것들을 통해 상태나 기능을 업데이트하고

그에 의하여 다시 뷰가 업데이트 되는 형태를 설명한다.

 

이때 뷰가 업데이트 되는것을 Recomposition 이라고 한다.