위 스크린샷은 최종 프로젝트로 만든 앱 화면의 일부이다. 프로젝트에서는 xml 레이아웃 파일로 만들었지만 시험삼아 위 화면과 (UI만) 똑같은 compose 코드를 만들어보았다.
package com.android.composetest
import ...
class SettingsActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeTestTheme {
Surface(
modifier = Modifier.fillMaxSize()
) {
SettingsScreen()
}
}
}
}
}
@Composable
fun SettingsScreen() {
Column(
modifier = Modifier
.fillMaxSize()
.background(Color.White)
.padding(start = 25.dp, top = 25.dp, end = 25.dp)
) {
Text(
text = "내 정보 관리",
fontSize = 34.sp,
fontWeight = FontWeight.Bold,
color = Color.Black
)
Spacer(modifier = Modifier.height(55.dp))
SettingsItem(
title = "별명",
value = "cococo35"
)
SettingsItem(
title = "이메일",
value = "test@google.com"
)
SettingsItem(
title = "비밀번호",
value = "********"
)
Spacer(modifier = Modifier.weight(1f))
Text(
text = "로그아웃",
fontSize = 22.sp,
fontWeight = FontWeight.Bold,
color = Color.DarkGray
)
Spacer(modifier = Modifier.height(20.dp))
Text(
text = "Hanple 탈퇴",
fontSize = 22.sp,
fontWeight = FontWeight.Bold,
color = Color(0xFFFF6B6B)
)
Spacer(modifier = Modifier.height(45.dp))
}
}
@Composable
fun SettingsItem(title: String, value: String) {
Column(modifier = Modifier.padding(vertical = 10.dp)) {
Text(
text = title,
fontSize = 22.sp,
fontWeight = FontWeight.Bold,
color = Color.Black
)
Text(
text = value,
fontSize = 20.sp,
color = Color.DarkGray,
modifier = Modifier.padding(top = 5.dp)
)
Divider(
color = Color.LightGray,
thickness = 1.dp,
modifier = Modifier.padding(top = 10.dp)
)
}
}
@Preview(showBackground = true)
@Composable
fun SettingsScreenPreview() {
SettingsScreen()
}
UI상으로는 나름 유사한 것을 확인할 수 있다. 텍스트는 하드코딩했고, 상호작용은 아직 전혀 구현되지 않았다.
compose가 아직 전혀 익숙하지 않아서, UI만 작성하는 데에도 시간이 오래 걸린다. 아직 compose의 구조가 헷갈리고 함수 사용법을 잘 모르는 문제가 있다.
'TIL' 카테고리의 다른 글
TIL 68일차 - 최종프로젝트 (0) | 2024.06.26 |
---|---|
TIL 67일차 - 최종프로젝트 (0) | 2024.06.25 |
TIL 65일차 - 최종프로젝트 (0) | 2024.06.21 |
TIL 64일차 - 최종프로젝트 (0) | 2024.06.20 |
TIL 63일차 - 최종프로젝트 (0) | 2024.06.19 |