domino8788 / SKHUMap

SKHU MAP
1 stars 0 forks source link

캘린더 뷰 구현 #127

Closed domino8788 closed 4 years ago

domino8788 commented 4 years ago

캘린더 페이지에 쓸 뷰를 구현한다.

직접 구현하는 것보다 나은 방안을 찾았으므로 참고한다.

아래 라이브러리에서 비교적 간단한 방법으로 커스텀 CalendarView 구성을 지원한다. https://github.com/kizitonwose/CalendarView 해당 라이브러리를 통해 캘린더 뷰를 구현하도록 한다.

이후부터는 해당 라이브러리의 사용법과 캘린더 뷰 에 필요한 부속에 대해 다룬다.

domino8788 commented 4 years ago

layout 에서 calendarView 사용 예시.

 <com.kizitonwose.calendarview.CalendarView
                android:id="@+id/exThreeCalendar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:cv_dayViewResource="@layout/calendar_day"
                app:cv_monthHeaderResource="@layout/calendar_header"
                app:cv_orientation="horizontal"
                app:cv_scrollMode="paged" />

monthScrollListener : 달력을 스크롤 할 때 발생하는 이벤트. 스크롤 후 달력에 표시되는 달에 대한 정보가 매개변수에 담긴다.

dayBinder : 달력에 표시되는 일이 갱신(달 변경) 될 때마다 발생하는 이벤트. create와 bind를 추상 함수로 가지며 여기서 일에 대한 표시 형식 변경 및 이벤트를 바인딩 할 수 있다. ex) 기념일은 별도로 표시

monthHeaderBinder : 달력의 헤더 부분에 표시할 데이터를 바인딩 하는 이벤트. 위에 명시한 calenderView의 app:cv_monthHeaderResource 에 명시한 레이아웃이 헤더가 된다.

monthFooterBinder : 달력의 푸터 부분에 표시할 데이터를 바인딩 하는 이벤트. 위에 명시한 calenderView의 app:cv_monthFooterResource 에 명시한 레이아웃이 헤더가 된다.

dayWidth : 각 일 셀 뷰의 너비

dayHeight : 각 일 셀 뷰의 높이

domino8788 commented 4 years ago

131 의 설계를 구현하기 위해 명시한 부속을 구현한다.

domino8788 commented 4 years ago

상세한 설정 적용은 Fragment 에서의 진행이 불가피하므로 #126 에서 구현하도록 한다. 명시한 구현을 완료했으므로 이슈를 닫는다.

domino8788 commented 4 years ago

캘린더 레이아웃에 수정사항이 생겨서 이슈를 재개한다.

domino8788 commented 4 years ago

수정사항을 반영했으므로 이슈를 닫는다.

domino8788 commented 4 years ago

애니메이터 관련 수정사항이 생겨서 이슈를 재개한다.

애니메이터가 크기를 잘못 측정하면서 뷰를 가려버리는 현상이 발생하고 있다. 기기마다 다르게 발생하는 것으로 확인되며 라이브러리에서 제공하는 크기 반환 함수의 문제인 것으로 파악된다. OverScroll 이펙트가 발생하는 것과 애니메이션 적용에 따른 UI Thread 충돌 문제 등 차라리 없는 게 낫다는 판단이 섰으므로 다음과 같이 수정한다.

domino8788 commented 4 years ago

수정을 완료했으므로 이슈를 닫는다.