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.propertiesgpr.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.)