본인은 달력 기능을 위해 안드로이드에서 제공해주는 calendarview를 사용했다.
날짜를 클릭하면 해당 날짜 data를 toast로 보이도록 하였다.
//mainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding //viewBinder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//viewBinder setting
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//calender setting
setupCalendar()
}
private fun setupCalendar(){
binding.contentMain.mainCalanderView.setOnDateChangeListener{ view, year, month, dayOfMonth ->
//month는 0부터 시작, dayOfMonth : 날짜
val dayOfWeek = MyCalendar.getInstance().getWeek(year,month,dayOfMonth) //요일
val date = "${year}.${String.format("%02d",month+1)}.${String.format("%02d",dayOfMonth)}(${dayOfWeek})"
val msg = "${date}가 클릭됨"
Toast.makeText(this@MainActivity,msg,Toast.LENGTH_SHORT).show()
binding.contentMain.mainTxtDate.setText("${date}")
}
//TODO: 오늘로 setting 필요할듯
}
}
//MyCalendar.kt
class MyCalendar private constructor(){
val week = arrayOf("일","월","화","수","목","금","토")
var cal = Calendar.getInstance()
companion object { //동반 객체(static 대신)
@Volatile private var instance: MyCalendar? = null; //singleton 패턴 사용
@JvmStatic fun getInstance(): MyCalendar =
instance ?: synchronized(this){ //instance가 null일 경우
instance ?: MyCalendar().also {
instance = it
}
}
}
fun getWeek(year:Int,month:Int,date:Int):String{ //요일 구하는 함수
cal.set(year,month,date)
val num = cal.get(Calendar.DAY_OF_WEEK)-1
return week[num];
}
}
<!-- activity_main.xml -->
<include
android:id="@+id/content_main"
layout="@layout/content_main" />
<!-- content_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<CalendarView
android:id="@+id/main_calanderView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp" />
</androidx.appcompat.widget.LinearLayoutCompat>
참고
https://tutorialwing.com/android-calendarview-using-kotlin-example/
https://developer.android.com/reference/android/widget/CalendarView
'경험들 > 토이 프로젝트' 카테고리의 다른 글
"할일관리 어플" #3 datepickerDialog (0) | 2022.04.06 |
---|---|
"할일관리 어플" #2 recyclerview (0) | 2022.03.29 |