나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-05-05 20:12:01

Jetpack Compose

1. 개요

Jetpack Compose는 안드로이드의 최신 UI 툴킷으로, 선언적 방식을 사용하여 더 간결하고 직관적인 UI 코드를 작성할 수 있도록 돕는다.

2. 주요 특징

3. 원리

4. 구현 예시

아래는 텍스트 입력과 버튼을 이용하여 로그인 버튼을 구현한 예시이다.

#!syntax kotlin
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material3.Button
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp

@Composable
fun LoginForm() {
    // 상태 변수 정의
    val (username, setUsername) = remember { mutableStateOf("") }
    val (password, setPassword) = remember { mutableStateOf("") }
    val context = LocalContext.current

    Column(modifier = Modifier.padding(16.dp)) {
        // 사용자 이름 입력 필드
        OutlinedTextField(
            value = username,
            onValueChange = setUsername,
            label = { Text("아이디") },
            modifier = Modifier.fillMaxWidth()
        )

        // 비밀번호 입력 필드
        OutlinedTextField(
            value = password,
            onValueChange = setPassword,
            label = { Text("비밀번호") },
            modifier = Modifier.fillMaxWidth()
        )

        // 로그인 버튼
        Button(
            onClick = {
                // 로그인 버튼 클릭 시 로직 처리
                // 예시로 Toast 메시지를 띄우는 것으로 함
                android.widget.Toast.makeText(context, "로그인 시도: $username", android.widget.Toast.LENGTH_SHORT).show()
            },
            modifier = Modifier
                .fillMaxWidth()
                .padding(top = 16.dp),
            contentPadding = PaddingValues(12.dp)
        ) {
            Text("로그인", fontSize = 18.sp)
        }
    }
}



5. Compose와 기존 UI 툴킷과의 비교

6. 외부 링크