开源项目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来了解一些例子。

原文地址:https://www.cnblogs.com/yuanchongjie/p/4818985.html