android+如何设置日历的属性+打开日历默认为月视图,GitHub - yannecer/NCalendar: 一款安卓日历,仿miui,钉钉,华为的日历,万年历、365、周日历,月日历,月视图、...

安卓日历 NCalendar

特点:

3种常见日历交互方式,MIUI系统日历:miui9、miui10、华为emui,miui9和钉钉日历类似,华为emui和365日历类似

月周滑动切换,月周不选中

支持多选,设置多选的数量

支持设置默认视图,默认周日历或者月日历

支持周状态固定,下拉刷新等

支持设置一周开始的是周一还是周日

可设置日期区间,默认区间从1901-01-01到2099-12-31

支持农历,节气、法定节假日等

支持添加指示点及设置指示点位置

支持各种颜色、距离、位置等属性

支持日历和列表之间添加view

支持替换农历、颜色等

支持自定义日历页面

支持内部TargetView为任意View

支持日历拉伸功能

支持适配器模式自定义日历

效果图

Miui9Calendar

Miui10Calendar

EmuiCalendar

9a84f9ef4758a171516229daf29f6e1f.gif

e89cc1815be45a7cd696a1355358abfc.gif

f964b39b78808759794789c951151d12.gif

周固定,下拉刷新

日历和子view添加其他view

自定义日历界面(LigaturePainter)

14812ddb4c3e5ed9f1d48c0859844fc5.gif

f4c020ff744aeeb5220697e86d78d1f7.gif

5045c7210a92f4ed1f9e696f516f78a5.png

默认不选中

默认多选

自定义日历界面(TicketPainter)

5b84a8e50f6df7dfd0d92510fe6ad64f.gif

383ca612dd8e73b95b5ebb4939add1b5.gif

12f6bed78149a294d730ce0ddcdb5a3a.png

ViewPager

普通View

demo功能预览

43a90875256c7b62cf3fe2a517ee30de.gif

9bcb9619da5882c3933884ce89584928.gif

6ad07992cea0dbd35073cf7f3329dbce.png

日历拉伸

Stretch.gif

下载demo:

使用方法

项目build文件

android {

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

...

}

Gradle

implementation 'com.necer.ncalendar:ncalendar:5.0.2'

简单使用

miui9 和 钉钉日历

android:id="@+id/miui9Calendar"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

<

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

Miui10Calendar EmuiCalendar 用法类似

单个月日历,单个周日历

月日历

android:layout_width="match_parent"

android:layout_height="300dp" />

周日历

android:layout_width="match_parent"

android:layout_height="50dp" />

自定义属性

5.x版本更新了大量的自定义属性

日历Api

日历提供了各种可能用到的方法、回调,5.x版本增加了日历日期变化的行为参数,区分了各种引起日历变化的不同的操作

日历设置时间标记、替换文字等Api

日历设置时间标记、替换文字的Api,只对InnerPainter有效,如果是自定义日历UI,则这些方法需要自己实现,

可参考InnerPainter相关代码

自定义日历UI

如果自定义属性不能满足日历ui要求,可以使用自定义页面实现个性化需求,项目提供了两种自定义UI的方式,

1、实现CalendarPainter接口,通过Canvas绘制

2、继承CalendarAdapter抽象类,和ListView的BaseAdapter用法相似

交流群

技术交流QQ群:127278900 (请先仔细看文档,然后再进群发问,上方加粗字体有下载demo链接)

常见问题

1、Activity初始化onCreate中调用jumpDate闪退

页面初始化时,日历还未完成初始化,可以使用 setInitializeDate 方法完成初始页面的日期选定,或者使用日历对象post方法设置jumpdate

miui10Calendar.post(new Runnable() {

@Override

public void run() {

miui10Calendar.jumpDate("2021-01-01");

}

});

2、日历UI问题,请使用自定义CalendarPainter,简单的做法是,复制库中InnerPainter,修改绘制的部分,然后给日历设置CalendarPainter

miui10Calendar.setCalendarPainter(myCalendarPainter);

感谢:

项目中日期计算使用 joda-time

感谢同事 魏昌琳 提出的优化建议

感觉农历和节气数据工具类的作者

更新日志

5.0.2

修复Android9日期变化回调多次的bug,增加2021年法定休班日

5.0.1

修复2020年腊月二十九为除夕的描述

5.0.0

重写InnerPainter,增加大量属性、优化跳转逻辑等

4.4.1

新增跳转月份的方法

4.4.0

新增适配器模式自定义页面

4.3.8

新增月日历上下月是否可点击的属性 isLastNextMonthClickEnable

4.3.7

修复选中月初月末,实际月份回调bug

4.3.6

增加数字背景以及渐变效果

4.3.4

修复周状态下滑动卡顿的bug

4.3.3

修复莫名跳转2099年的bug,增加是否每个月都是6行的属性

4.3.2

增加日历拉伸功能

4.2.0

支持任意非滑动的View,ViewPger等

4.1.2

完善LigaturePainter

4.1.1

修改选中模式为枚举,demo增加了两种自定义CalendarPainter

4.1.0

优化onDraw效率、修改CalendarPainter回调参数、新增多选日期数量

4.0.4

修复某些情况下选中回调返回null的bug

4.0.2

修复节气不显示的bug

4.0.1

1、新增月周切换日历多选

2、新增默认不选中折叠

3、新增翻页默认选中每月1号

4、修复设置左右padding偏差

License

Copyright 2018 necer

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值