Jetpack Compose Tutorial - Compose Essential 4

Arrangement : rows, columns, flexboxes와 같은 children 들을 어떻게 정렬할 것인지를 나타내는 속성

Alignment : single element가 parent container 내부에서 어디에 배치될 것인지, 남는 여유 공간에서 어디에 배치될 것인지를 나타내는 속성.

즉, Arragnement다수를 정렬하는 방법, Alignment1개를 배치하는 방법

hoist state : Composables와 관련된 state를 Composables를 호출하는 곳으로 옮겨서 선언하는 패턴

= 대신 by를 사용해서 value 생략하기

변수에 = 를 사용해서 값을 할당하면, .value 를 이용해서 값을 꺼내야 한다.

val expanded = remember { mutableStateOf(false) }

...

ElevatedButton(onClick = { expanded.value = !expanded.value }) {
    Text(if (expanded.value) "Show less" else "Show more")
}

= 대신 by를 사용하면 value를 사용하지 않고 값에 접근할 수 있다.

var expanded by remember { mutableStateOf(false) }

...

ElevatedButton(onClick = { expanded = !expanded }) {
    Text(if (expanded) "Show less" else "Show more")
}

LazyColumn, LazyRow

LazyColumn, LazyRow는 Android View에서 사용하는 RecyclerView와 같은 기능을 제공한다.

하지만 RecyclerView처럼 가지고 있는 View를 재활용하지 않고, 스크롤할 때 새로운 Composables를 emit 한다. composables를 emit 하는 것이 Android View를 instantiate 하는 것보다 비용이 적기 때문이다.

remember, rememberSaveable

remember로 선언한 변수는 화면 회전시에 값이 초기화 된다. 화면 회전시 activity가 사라지면서 다시 생성되기 때문이다. 화면 회전 뿐만 아니라 process death, dark mode 혹은 light mode 전환 시에도 그렇다.

화면 회전, process death에도 불구하고 값을 유지할 필요가 있을 때 remeberSaveable을 사용한다.