MainActivity.kt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DefaultTheme {
CalendarApp()
}
}
}
}
@Composable
fun CalendarApp(){
// 시간에 대한 정보
val calendarInstance = Calendar.getInstance()
val time = remember {
mutableStateOf(calendarInstance)
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(20.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
CalendarHeader(time)
CalendarHeaderBtn(time)
CalendarDayName()
}
}
@Composable
fun CalendarHeader(date: MutableState<Calendar>) {
// xxxx년 00월
val resultTime = SimpleDateFormat("yyyy년 MM월", Locale.KOREA).format(date.value.time)
Text(
text = resultTime,
fontSize = 30.sp
)
}
@Composable
fun CalendarHeaderBtn(date: MutableState<Calendar>) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(top = 30.dp, bottom = 30.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
Button(onClick = {
val newDate = Calendar.getInstance()
newDate.time = date.value.time
newDate.add(Calendar.MONTH, -1)
date.value = newDate
},
colors = ButtonDefaults.buttonColors(
containerColor = Color.Black
)
) {
Text(
text = "<",
color = Color.Green
)
}
Button(onClick = {
val newDate = Calendar.getInstance()
newDate.time = date.value.time
newDate.add(Calendar.MONTH, +1)
date.value = newDate
},
colors = ButtonDefaults.buttonColors(
containerColor = Color.Black
)
) {
Text(
text = ">",
color = Color.Green
)
}
}
}
@Composable
fun CalendarDayName() {
val nameList = listOf("일", "월", "화", "수", "목", "금", "토")
Row() {
nameList.forEach {
Box(
modifier = Modifier.weight(1f),
contentAlignment = Alignment.Center
) {
Text(
text = it,
fontSize = 18.sp,
fontWeight = FontWeight.ExtraBold
)
}
}
}
}
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
DefaultTheme {
CalendarApp()
}
}