= 컴포저블 = 컴포넌트
@compose
컴포저블 호출 → 앱 안에서 UI의 해당 영역이 렌더링될 때, 사용자에게 표시되고 동작되는 방식을 정의하는 데이터와 프로퍼티 집합을 전달한다.
컴포저블 함수는 데이터를 UI로 변환한다.
컴포즈 런타임으로 UI 요소를 전달하면 컴포즈 런타임을 통해 랜더링 한다.
내장 컴포저블 + 커스텀 컴포저블을 조화해서 UI를 구성
컴포저블 함수
상태(in 컴포저블 컨택스트) =앱 실행 중 변경할 수 있는 모든 값
컴포저블 함수도 일반 코틀린 함수처럼 비슷하게 작성한다.
class TextScreen : ComponentActivity() {
@Composable
fun CustomText(text: String, fontWeight: FontWeight, color: Color) {
Text(
text = text,
fontWeight = fontWeight,
color = color
)
}
@Composable
fun CustomSwitch() {
val checked = remember { mutableStateOf(true) }
Column {
Switch(
checked = checked.value,
onCheckedChange = { checked.value = it }
)
if (checked.value){
Text("On")
} else{
Text("Off")
}
}
}
@Composable
fun CustomList(items: List<String>){
Column {
for (item in items){
Text(item)
Divider(color = Color.LightGray)
}
}
}
@Preview
@Composable
fun DefaultPreview() {
// CustomText(text = "helloCompose", fontWeight = FontWeight.Bold, color = Color.Cyan)
// CustomSwitch()
CustomList(listOf("one","two","three","for"))
}
}
컴포즈에서 번들로 제공하는 컴포저블 분류
파운데이션 컴포넌트와 머티리얼 디자인 컴포넌트는 상호 배타적이지 않다.