안드로이드/컴포즈

remeber 와 상태 rememberremember는 초기 컴포지션 동안 값을 저장하고 리컴포지션이 발생해도 값을 유지한다.컴포저블이 컴포지션에서 사라지면(예: 조건문에 의해 UI에서 제거) remember로 저장한 값도 잊는다.mutableState MutableState는 런타임 시에 컴포즈에 통합되는 Observable한 유형이다. 선언은 다음과 같은 세가지 방법으로 가능하다. val mutableState = remember { mutableStateOf(default) }var value by remember { mutableStateOf(default) }val (value, setValue) = remember { mutableStateOf(default) }  mutableStateOf는..
컴포즈의 3단계     컴포즈에는 세개의 주요 단계가 있다. 컴포지션: 표시할 UI로, 컴포즈는 구성 가능한 함수를 실행하고 UI 설명을 만든다.레이아웃: UI를 배치할 위치이다. 이 단계는 측정과 배치라는 두 단계로 구성된다. 레이아웃 요소는 레이아웃 트리에 있는 각 노드의 레이아웃 요소 및 모든 하위 요소를 2D 좌표로 측정하고 배치한다그리기: UI를 렌더링하는 방법이다. UI 요소는 일반적으로 기기 화면인 캔버스에 그려진다.    따라서 데이터가 컴포지션 -> 레이아웃 -> 그리기의 순서로 한 방향으로 이동하여 단방향 데이터 흐름을 가진다고 한다. 개념적으로 이러한 각 단계는 모든 프레임에서 발생하지만 성능을 최적화하기 위해 Compose는 모든 단계에서 동일한 입력으로 동일한 결과를 계산하는 반복..
함수형 UI vs 선언형 UI컴포즈를 이해하려면 선언형 UI가 무엇인지, 그 탄생 배경이 어떠한지 부터 이해하는 것이 편하다.  기존 안드로이드 뷰 계층 구조는 함수형 UI로, UI 위젯의 트리로 표시할 수 있었다. 사용자 상호작용 등의 이유로 인해 앱의 상태가 변경되면, 현재 데이터를 표시하기 위해 UI 계층 구조를 업데이트해야 했다. UI를 업데이트하는 가장 일반적인 방법은 findViewById()와 같은 함수를 사용하여 트리를 탐색하고 button.setText(String), container.addChild(View) 또는 img.setImageBitmap(Bitmap)와 같은 메서드를 호출하여 노드를 변경해 위젯의 내부 상태를 변경시켰다.  이때, 데이터를 여러 위치에서 렌더링하고 뷰를 업데..
앞선 포스트에서 컴포즈에 대해서 알아보았다면 이제 본격적으로 개발기이다. 이전에도 언급했듯이 현재 컴포즈+멀티모듈로의 마이그레이션을 진행 중이라 아마 그에 대한 개발 기록이 되지 않을까싶다. 모듈화와 같은 어느정도 세팅이 끝나서 네비게이션 바를 만들고 Compose Navigation 을 직접 사용해 보아서 이를 정리해보고자 한다.   Navigation  NavHostProvides in place in the Compose hierarchy for self contained navigation to occur. Once this is called, any Composable within the given NavGraphBuilder can be navigated to from the provided ..
SateFul Composableremember를 사용하여 객체를 저장하는 컴포저블은 내부 상태를 생성하여 컴포저블을 Stateful로 만든다. @Composablefun HelloContent() { Column(modifier = Modifier.padding(16.dp)) { var name by remember { mutableStateOf("") } if (name.isNotEmpty()) { Text( text = "Hello, $name!", modifier = Modifier.padding(bottom = 8.dp), style = MaterialTheme.ty..
컴포즈의 사용 이유와 선언형 UI에 대해 알아보았다면, 이제 코드랩을 열어보자. 벌써부터 처음보는게 생긴다. 바로 컴포저블 ㅎ ㅎ .. ^^ 오늘은 컴포저블이 무엇인지 어떻게 쓰이는지 상태 관리는 어떻게 하는지에 대해 공부해보도록 하자.   용어 정리컴포저블 함수데이터를 수신할 수 있고, UI를 만들기 위해 수신받은 데이터를 사용하며, 사용자가 화면에서 볼 수 있는 UI 구성요소를 내보낸다.컴포지션Jetpack Compose가 컴포저블을 실행할 때 빌드한 UIUI를 기술하는 컴포저블의 트리 구조리컴포지션데이터가 변경될 때 컴포지션을 업데이트하기 위해 컴포저블을 다시 실행하는 것  컴포저블의 생명 주기  컴포즈는 초기 컴포지션 시 처음으로 컴포저블을 실행할 때 컴포지션에서 UI를 표현하기 위해서 해당 컴포..
안드로이드 앱이라고 하면 코틀린+xml의 사용이었지만, 컴포즈의 탄생 이후 컴포즈로의 이전이 점차 활발해지면서 이제 컴포즈를 정말 피할 수 없다. 플러터 찍먹도 해보고 컴포즈 코드랩도 해보면서 대충 어떤식이구나 ~ 하는 감은 잡았지만 개발-출시까지 xml 마냥 손이 저절로 움직이지는 않기에 .. 반성하며 이번 여름을 컴포즈와 함께 보내려고 한다. 다른 게시판은 정말 정적인.. 리터럴리 개발 블로그였다면 당분간 이 컴포즈 카테고리는 TIL 마냥 컴포즈에 대해 매일 하나씩 조금씩 공부하고 기록해보도록 하자. 또 위니를 멀티모듈 + 컴포즈로 혼자 마이그레이션 해보고 있는데 그 작업일지도 함께 기록해보도록 노력해보겠다 ! !   거두절미 하고, 컴포즈하면 선언형 UI이니 선언형 프로그래밍이 무엇인지에 대해 먼저..
sxunea
'안드로이드/컴포즈' 카테고리의 글 목록