CalendarSet
달력의 한 페이지로, 한 화면에 보여줄 기간
MonthCalendarView
가로 스와이프로 달력을 보여줍니다.
YearCalendarView
세로 스크롤로 달력을 보여줍니다.
Step 1. JitPack repository를 prject build.gradle에 추가합니다.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. dependency를 추가합니다.
dependencies {
implementation 'com.github.boostcampwm-2021:android01-CalendaRun:${version}'
}
fun setOnDateClickListener(onDateClickListener: OnDayClickListener)
fun setOnDaySecondClickListener(onDateSecondClickListener: OnDaySecondClickListener)
fun setSchedule(schedule: CalendarScheduleObject)
fun setSchedules(schedules: List<CalendarScheduleObject>)
fun setTheme(designObject: CalendarDesignObject)
fun resetTheme()
fun getDaySchedules(day: LocalDateTime): List<CalendarScheduleObject>
fun setCalendarSetList(calendarSetList: List<CalendarSet>)
fun setupDefaultCalendarSet()
YearCalendarView
또는MonthCalendarView
를 레이아웃 또는 뷰 계층에 추가합니다.- 필요하다면
OnDayClickListener
또는onDaySecondClickListener
를 추가할 수 있습니다.
onDayClickListner
는 날짜를 선택할 때 실행됩니다.onDaySecondClickListner
는 클릭된 날짜를 선택할 때 실행됩니다.
Example:
<com.drunkenboys.ckscalendar.yearcalendar.YearCalendarView
android:id="@+id/calendar_year"
app:onDayClick="@{(date, position) -> dayClickEvent(date)}"
app:onDaySecondClick="@{(date, position) -> daySecondClickEvent(date)}" />
<com.drunkenboys.ckscalendar.monthcalendar.MonthCalendarView
android:id="@+id/calendar_month"
app:onDayClick="@{(date, position) -> dayClickEvent(date)}"
app:onDaySecondClick="@{(date, position) -> daySecondClickEvent(date)}" />
data class CalendarScheduleObject(
val id: Int,
val color: Int,
val text: String,
val startDate: LocalDateTime,
val endDate: LocalDateTime,
val isHoliday: Boolean = false
)
val scheduleList = listOf(
CalendarScheduleObject(
0,
ScheduleColorType.ORANGE.color,
"Schedule01",
LocalDateTime.now(),
LocalDateTime.now()
),
CalendarScheduleObject(
1,
ScheduleColorType.BLUE.color,
"Schedule02",
LocalDateTime.now(),
LocalDateTime.now()
),
CalendarScheduleObject(
2,
ScheduleColorType.GRAY.color,
"Schedule03",
LocalDateTime.now(),
LocalDateTime.now()
),
)
binding.calendarMonth.setSchedules(scheduleList)
binding.calendarYear.setSchedules(scheduleList)
XML
에서는 아래의 속성들을, 프로그래밍적 수정으로는 CalendarDesignObject
를 통해 달력의 커스텀 요소를 지원합니다
Attribute | Type | description |
---|---|---|
weekDayTextColor | Color | 평일 색상 |
holidayTextColor | Color | 공휴일 색상 |
saturdayTextColor | Color | 토요일 색상 |
sundayTextColor | Color | 일요일 색상 |
selectedFrameColor | Color | 날짜 선택 테두리 색상 Stroke 색상을 변경 |
backgroundColor | Color | 달력 배경 색상 |
selectedFrameDrawable | Shape Drawable | 날짜 선택 테두리 |
visibleScheduleCount | Integer | 보여질 일정 개수(5개 이하) |
data class CalendarDesignObject(
@ColorInt var weekDayTextColor: Int = Color.BLACK,
@ColorInt var holidayTextColor: Int = ScheduleColorType.RED.color,
@ColorInt var saturdayTextColor: Int = ScheduleColorType.BLUE.color,
@ColorInt var sundayTextColor: Int = ScheduleColorType.RED.color,
@ColorInt var selectedFrameColor: Int = ScheduleColorType.GRAY.color,
@ColorInt var backgroundColor: Int = Color.WHITE,
@DrawableRes var selectedFrameDrawable: Int = R.drawable.bg_month_date_selected,
var textSize: Float = 10f,
var textAlign: Int = Gravity.CENTER,
val weekSimpleStringSet: List<String> = listOf("일", "월", "화", "수", "목", "금", "토"),
val weekFullStringSet: List<String> = listOf("일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"),
var visibleScheduleCount: Int = 3
)
모든 문서는 위키에 저장되어 있습니다.
- Fork Project
- 이슈 등록
- Feature Branch 생성 (
git checkout -b feature/#IssueNumber
) - Commit (
git commit -m 'Issue-#{Number} feat: AmazingFeature'
) - Push Branch (
git push origin feature/#IssueNumber
) - Pull Request 요청
달려달력은 부스트캠프 웹•모바일 6기 Andrunken 팀이 개발 및 서비스하고 있는 달력 애플리케이션입니다.
달려달력은 사용자가 원하는 대로 달력을 구성하고 일정을 관리할 수 있습니다.
달력 관리
사용자는 새 달력을 추가할 수 있고, 달력들을 관리할 수 있으며, 수정, 삭제도 가능합니다.
커스텀 달력
사용자는 달력의 한 페이지를 월 단위(30일)가 아닌 임의의 기간을 설정할 수 있습니다. 또한 스와이프를 통해 달력의 일부 기간을 따로 확인할 수 있습니다.
일정 관리
달력에 일정을 추가하여 관리할 수 있습니다. 일정은 시간, 메모를 기록할 수 있고, 알림을 설정하여 선택된 시간에 알림을 받을 수 있습니다. 또한 달력에 표시될 일정의 색을 선택할 수 있습니다.
일정 검색
일정에 알림을 설정하여 선택된 시간에 알림을 받을 수 있습니다.
홈 화면 위젯
홈 화면에 위젯을 추가하여 오늘 일정을 확인할 수 있습니다.
테마 변경
다크 모드를 지원합니다. 달력의 디자인(달력, 글자 색 등)을 변경할 수 있습니다.
공휴일 지원
달력에 공휴일을 일정처럼 표시해서 보여줍니다.
달력
사용자의 최종 일정 또는 목표 (수능, 프로젝트 등)
슬라이스
달력의 한 페이지로 한 화면에 보여줄 기간
일정 단기간에 이룰 목표
- Android Jetpack
- Lifecycle
- Databinding
- Navigation
- Room
- Hilt
- Coroutine / Flow
- MVVM
- Retrofit2