본문 바로가기
경험들/토이 프로젝트

"할일관리 어플" #1 달력 만들기

by 시아나 2022. 3. 29.

 

본인은 달력 기능을 위해 안드로이드에서 제공해주는 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/

 

Android CalendarView Using Kotlin With Example - Tutorialwing

learn how to android calendarview using kotlin in any android application. learn different attributes of android calendarview to customise it

tutorialwing.com

https://developer.android.com/reference/android/widget/CalendarView

 

CalendarView  |  Android Developers

 

developer.android.com

 

'경험들 > 토이 프로젝트' 카테고리의 다른 글

"할일관리 어플" #3 datepickerDialog  (0) 2022.04.06
"할일관리 어플" #2 recyclerview  (0) 2022.03.29