安卓日历 NCalendar

特点:

效果图

Miui9Calendar Miui10Calendar EmuiCalendar
周固定,下拉刷新 日历和子view添加其他view 自定义日历界面(LigaturePainter)
默认不选中 默认多选 自定义日历界面(TicketPainter)
ViewPager 普通View demo功能预览
日历拉伸

下载demo:

下载demo

使用方法

项目build文件

    android {

       compileOptions {
           sourceCompatibility JavaVersion.VERSION_1_8
           targetCompatibility JavaVersion.VERSION_1_8
       }
    ...
    }

Gradle

implementation 'com.necer.ncalendar:ncalendar:5.0.0'   

简单使用

    miui9 和 钉钉日历
    <com.necer.calendar.Miui9Calendar
        android:id="@+id/miui9Calendar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <<androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </com.necer.calendar.Miui9Calendar>

    Miui10Calendar EmuiCalendar 用法类似

单个月日历,单个周日历

   月日历
   <com.necer.calendar.MonthCalendar
        android:layout_width="match_parent"
        android:layout_height="300dp" />

   周日历
   <com.necer.calendar.WeekCalendar
        android:layout_width="match_parent"
        android:layout_height="50dp" />

详细用法


自定义属性

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

自定义属性


日历Api

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

日历Api

日历Api相关类说明


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

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

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


自定义日历UI

如果自定义属性不能满足日历ui要求,可以使用自定义页面实现个性化需求,项目提供了两种自定义UI的方式,
1、实现CalendarPainter接口,通过Canvas绘制
2、继承CalendarAdapter抽象类,和ListView的BaseAdapter用法相似

自定义日历UI


交流群

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


感谢:

项目中日期计算使用 joda-time
感谢同事 魏昌琳 提出的优化建议
感觉农历和节气数据工具类的作者


更新日志

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.