Jetpack Compose로 캘린더 라이브러리를 만들었습니다.
11867 단어 AndroidKotlinJetpack Composetech
개시하다
Jetpack Compose를 사용해 앱을 만들었는데 캘린더 라이브러리에 좋은 게 없어서 직접 만들었다.
Giithub Packages 라이브러리로서 원하는 경우 자유롭게 사용하십시오.
Gradle version
7.0.2
minSDK
26
targetSDK
30
Jetpack Compose version
1.0.2
accompanist version
0.17.0
사용법
라이브러리로 설치
github.properties
파일 생성.gitignore
에 추가github.properties
gpr.user={userName}
gpr.key={GithubAccessToken}
build.gradle
에 다음과 같은 내용을 보충한다def githubProperties = new Properties()
githubProperties.load(new FileInputStream(rootProject.file("github.properties")))
allprojects {
repositories {
...
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/taiki0304/ComposeCalendar")
credentials {
username = githubProperties['gpr.user'] ?: System.getenv("USERNAME")
password = githubProperties['gpr.key'] ?: System.getenv("TOKEN")
}
}
}
}
app/build.gradle
에 다음 의존 관계 추가compose-calendar
accompanist-pager
plugins {
id 'maven-publish'
}
dependencies {
implementation "com.taiki0304:compose-calendar:<version>"
implementation "com.google.accompanist:accompanist-pager:<version>"
}
기능 소개
일주일 시작
월요일
// 日曜日始まり(初期値)
CalendarManager.firstDayOfWeek = FirstDayOfWeek.SUNDAY
// 月曜日始まり
CalendarManager.firstDayOfWeek = FirstDayOfWeek.MONDAY
페이지 전환 방향
수직 교환
// 横スワイプ(初期値)
CalendarManager.Layout.swipeDirection = SwipeDirection.HORIZONTAL
// 縦スワイプ
CalendarManager.Layout.swipeDirection = SwipeDirection.VERTICAL
일본의 공휴일은 완전히 대응한다
// 日本の祝日
CalendarManager.holidayStrategy = JapaneseHolidayStrategy()
독립된 휴일 판단 논리를 만들 때
적합한 범주
HolidayStrategy
를 만들고 구현isHoliday(date:)
CalendarManager.holidayStrategy
로 설정하여 사용할 수 있다.class MyHolidayStrategy : HolidayStrategy {
private val japaneseHolidayStrategy = JapaneseHolidayStrategy()
/** 祝日判定とする日付 */
private val additionalHolidays = listOf(
LocalDate.of(2021, 1, 15),
LocalDate.of(2021, 1, 16),
LocalDate.of(2021, 1, 17),
)
override fun isHoliday(date: LocalDate): Boolean {
if (japaneseHolidayStrategy.isHoliday(date)) {
return true
} else if (additionalHolidays.contains(date)) {
return true
}
return false
}
}
이벤트 처리
교환 페이지에서 페이지 전환
onChangePage
에서 교환 페이지를 전환할 때의 이벤트를 처리할 수 있습니다Calendar(onChangePage = { yearMonth ->
// スワイプでのページ切り替え時のイベント
})
날짜 선택
onSelectDay
처리 가능한 날짜 선택 이벤트Calendar(onSelectDay = { date ->
// 日付の選択
})
끝맺다
Jetpack Compose 구현으로 UI 제작은 코드 양을 대폭 줄여 복잡한 UI를 쉽게 만들 수 있게 됐다.
또 지이허브 패키지도 처음 사용하지만 의외로 간단해 앞으로 잘 활용할 계획이다.
언제든지 라이브러리를 업데이트하고 싶으니 의견이 있으면 메시지를 남겨 주세요.
Reference
이 문제에 관하여(Jetpack Compose로 캘린더 라이브러리를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/taiki0304/articles/21de8886884156텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)