開源項目Material Calendar View 學習記錄 (一)


開源項目Material Calendar View 學習記錄

Github:

https://github.com/prolificinteractive/material-calendarview

 

README.md 中文翻譯:

    Material Calendar View將Android CalendarView 的Material Design風格向后移植。其目標是擁有Material的視覺和使用效果,而不是完全依賴於平台的實現。

 

0.8.0版本的主要變更

    此視圖現在對布局參數的響應更好了。此功能類似於ImageView上的adjustViewBounds參數,該參數會讓視圖嘗試占用所需的盡可能多的空間,但我們是基於tile尺寸而不是寬高比。例外情況是,如果tileSize參數被設置了,將會覆蓋其它參數並將視圖設置成該尺寸。

 

使用方法

    1,將compile 'com.prolificinteractive:material-calendarview:0.8.1' 加到你的依賴項中。

    2,添加MaterialCalendarView到你的布局或視圖層中。

    3,需要時,設置一個OnDateChangedListener 或者調用MaterialCalendarView.getSelectedDate()。

 

例子:

<com.prolificinteractive.materialcalendarview.MaterialCalendarView    
android:id="@+id/calendarView"    
android:layout_width="match_parent"    
android:layout_height="wrap_content"      
xmlns:app
="http://schemas.android.com/apk/res-auto"
app:mcv_showOtherDates
="boolean" app:mcv_arrowColor="color" app:mcv_selectionColor="color" app:mcv_headerTextAppearance="style" app:mcv_dateTextAppearance="style"
app:mcv_weekDayTextAppearance
="style" app:mcv_weekDayLabels="array" app:mcv_monthLabels="array" app:mcv_tileSize="dimension" app:mcv_firstDayOfWeek="enum" app:mcv_leftArrowMask="drawable" app:mcv_rightArrowMask="drawable" />

 

自定義

    這個庫的一個目標是可定制化,Java代碼和XML屬性中包含下列可用的選項:

屬性

類型

描述

showOtherDates

boolean

    默認情況下,只有一個內的日期才會顯示出來。如果設置為true,那么之前或之后月份的日期會被用來填充空白空間。此屬性會使顯示的日期超出最小和最大值范圍。

arrowColor

color

    設置日歷翻頁箭頭的顏色,默認是黑色。

selectionColor

color

    設置日期選擇器的顏色。默認情況下,在5.0以上使用?android:attr/colorAccent,或者AppCompat庫中的?attr/colorAccent。

headerTextAppearance

style

    重設頂部年月指示器的文本外觀。

weekDayTextAppearance

style

    重設星期指示器的文本外觀。

dateTextAppearance

style

    重設日期的文本外觀。

weekDayLabels

array

    提供星期的定制標簽。這會給此CalendarView設置一個ArrayWeekDayFormatter 。默認使用Java的Calendar類,獲取一個短的顯示名。

monthLabels

array

    提供月份的定制標簽。這會給此CalendarView設置一個MonthArrayTitleFormatter 。默認使用SimpleDateFormat 的"MMMM yyyy"格式。

tileSize

dimension

   對每一個tile設置一個定制的尺寸。日歷中的每一天是一個tile,頂部的控制欄是一個tile高。整個控件是7個tile寬,八個tile高。默認的tile尺寸是44dp。

firstDayOfWeek

enum

    設置每月的第一天。

leftArrowMask

drawable

    設置左箭頭的繪制效果。

rightArrowMask

drawable

    設置右箭頭的繪制效果。

   

    只在Java中可用的屬性:

Method

Description

setMinimumDate()

    設置日歷中最早可見的日期。

setMaximumDate()

    設置日歷中最晚可見的日期。

setSelectedDate()

    設置選中的日期,必須在最小值和最大值之間。

setTopbarVisible()

    設置頂欄(箭頭和標題) 可見或消失。

 

事件,高亮,定制選擇器,還有更多!

    Material CalendarView 提供了API,允許你修改日期的外觀。 DayViewDecorator API 可以做到:

    設置自定義的背景圖片;

    設置自定義的選中圖片;

    為完整的日期文本使用span(提供了DotSpan,在文本正下方畫一個點);

    設置日期為不可用。

 

    要做到這些,你需要創建一個新的DayViewDecorator實例,通過addDecorator()方法添加給日歷。裝飾效果通過傳遞給decorate()方法的DayViewFacade對象完成。所有DayViewFacade的調用會應用到所有shouldDecorate()方法返回true的日期。

    DayViewFacade有四個方法提供裝飾效果:

    1,setBackgroundDrawable() 設置一個drawable對象到最后方,此對象會響應狀態的改變。

    2,setSelectionDrawable() 允許為特殊日期定制選擇指示器。

    3,addSpan() 給整個日期標簽設置span。

    4,setDaysDisabled() 允許你禁用或重新使能日期。此方法不會影響最小和最大日期。

    如果你的一個裝飾器在被添加給日歷視圖后改變了,確保你調用了MaterialCalendarView.invalidateDecorators()方法來使這些修改生效。

    當實現一個DayViewDecorator對象時,確保他們盡可能的高效。記住shouldDecorate()方法在每個月份視圖中需要被調用42次。一個簡單的提高效率的方法是將你的數據在shouldDecorate()方法外轉換成CalendarDay。

    查看示例app中的BasicActivityDecorate來了解一些例子。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM