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

开源项目Material Calendar View 学习记录 (一)的更多相关文章

  1. Material Calendar View 学习记录(二)

    Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...

  2. 编译CM13源码添加来去电归属地 SudaMod开源项目,查看commit提交记录

    这个问题纠结了很多时间,感谢苏打先森@Sudamod的开源项目. 大家知道CM13是没有来去点归属地的,就算有那也是google,对于中国人不适用,所以这里把方法贡献出来. 1.与通话有关的app D ...

  3. 开源库RxJava、ButterKnife学习记录

    1. 简介 RxJava "RxJava is a Java VM implementation of Reactive Extensions: a library for composin ...

  4. BLHeli/ BLHeli_S开源无刷电调学习记录

    BLHeli的历史轨迹:BLHeli -> BLHeli_S -> BLHeli_32,我们重点学习BLHeli_S版本. 该代码支持常规的1-2ms脉冲宽度输入,以及Oneshot125 ...

  5. iOS开发之开源项目链接

    1. Coding iOS 客户端 Coding官方客户端. 笔者强烈推荐的值得学习的完整APP.GitHub - Coding/Coding-iOS: Coding iOS 客户端源代码 2. OS ...

  6. 国内最火的 HTML、CSS、JavaScript 开源项目 Top 榜,你知多少?

    对于开发者而言,想要着手前端开发,HTML.CSS 和 JavaScript 是三项必备的基础技能.而如何事半功倍地掌握好这些知识?通过了解当下火热的开源项目不乏为最佳学习姿势.本文盘点国内评分最高且 ...

  7. 世界级的开源项目:TiDB 如何重新定义下一代关系型数据库

    著名的开源分布式缓存服务 Codis 的作者,PingCAP 联合创始人& CTO ,资深 infrastructure 工程师的黄东旭,擅长分布式存储系统的设计与实现,开源狂热分子的技术大神 ...

  8. android 学习记录-----------android 活动 意图 碎片

    将此篇博客作为记录android项目开发过程中的学习记录

  9. 【转】优秀的Go开源项目

    http://www.mhtclub.com/post/60   目录 优秀的Go开源项目 中文Go语言学习教程 国外的Go语言教程 openbilibili源码 Go作为Google2009年推出的 ...

随机推荐

  1. PM2.5空气质量指数(AQI)是如何计算的

    AQI如何计算     具体要计算PM2.5空气质量指数(AQI),SENBE申贝技术人员向您介绍如何计算的公式.     比如当实测浓度小于等于0.035时,根据实测浓度×50/0.035计算.例如 ...

  2. mongodb一个关键字对多个字段同时查询,mongodb $or $and查询

    $query = '{ "$and": [                 {"$or": [{"reported": {"$ex ...

  3. Win7下部署 .NET MVC网站 之 HTTP错误 403.14-Forbidden 解决方法

    今天在 IIS 7 发布MVC 站点时 遇到 ”HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容 “ 的错误提示. 一番折腾后发现在web.config 中加入 ...

  4. 练习使用css3实现3d按钮

    网上有很多漂亮的用css3实现的3d按钮,如'这个'.‘糖果色按钮’, 今天练习了一下,喏,下面这样,兼容性不好. 小黑子小虎子 3d效果和发光效果都是利用box-shadow,也经常利用伪元素:af ...

  5. 关于js中的事件

    这是第一篇技术性博客. 因为最近做的web版前端求职简历算是告一段落了(点此看简历).(稍微记录下吧:自从确定简历的简笔画风格后(因为刚开始设想的蓝天白云大树啥的不仅图片特难找而且做着做着就觉得有点俗 ...

  6. jquery正则表达式显示文本框输入范围 只能输入数字、小数、汉字、英文字母的方法

    正则表达式限制文本框只能输入数字 许多时候我们在制作表单时需要限制文本框输入内容的类型,下面我们用正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等各类代码.1.文本框只能输入数字代码(小数点 ...

  7. FileZilla Server下载以及安装使用

    新版本filezilla server已经不能在windows xp和windows20003下使用了 下面是可以在xp和2003下使用的最后版本下载地址 http://pan.baidu.com/s ...

  8. 认识 web 服务器端脚本语言 PHP

    ---恢复内容开始--- 变量 定义:定义之后,值可以改变的量.PHP中的变量可以先后赋值为不同类型的值. 语法格式:$变量名 = 值; 常量 定义:常量:一旦声明之后,值就不能再改变的量. 语法格式 ...

  9. IT人大学生活之“做点正经事”

    最近一直主抓部门的人事招聘工作:很多到手的简历,特别是毕业一年之内的同学的简历上面都会写到:在xxx餐饮公司实习,获得了与人交流的经验:在学生会组织了哪些文体活动:在大四参加了一些与软件开发不相关的一 ...

  10. UVA11922--Permutation Transformer (伸展树Splay)

    题意:m条操作指令,对于指令 a  b 表示取出第a~b个元素,翻转后添加到排列的尾部. 水题卡了一个小时,一直过不了样例.  原来是 dfs输出的时候 忘记向下传递标记了. #include < ...