Jetpack Compose로 캘린더 라이브러리를 만들었습니다.

개시하다


Jetpack Compose를 사용해 앱을 만들었는데 캘린더 라이브러리에 좋은 게 없어서 직접 만들었다.
Giithub Packages 라이브러리로서 원하는 경우 자유롭게 사용하십시오.
https://github.com/taiki0304/ComposeCalendar
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
  • github.properties
    gpr.user={userName}
    gpr.key={GithubAccessToken}
    
  • build.gradle에 다음과 같은 내용을 보충한다
  • 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
  • app/build.gradle
    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를 쉽게 만들 수 있게 됐다.
    또 지이허브 패키지도 처음 사용하지만 의외로 간단해 앞으로 잘 활용할 계획이다.
    언제든지 라이브러리를 업데이트하고 싶으니 의견이 있으면 메시지를 남겨 주세요.

    좋은 웹페이지 즐겨찾기