精华内容
下载资源
问答
  • android日历

    2016-05-18 20:51:16
    android日历
  • 安卓日历 NCalendar特点:3种常见日历交互方式,MIUI系统日历:miui9、miui10、华为emui,miui9和钉钉日历类似,华为emui和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

    日历拉伸

    7f3ca522bf902e5baebfa627fbf84477.gif

    下载demo:

    使用方法

    项目build文件

    android {

    compileOptions {

    sourceCompatibility JavaVersion.VERSION_1_8

    targetCompatibility JavaVersion.VERSION_1_8

    }

    ...

    }

    Gradle

    implementation 'com.necer.ncalendar:ncalendar:5.0.1'

    简单使用

    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链接)

    感谢:

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

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

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

    更新日志

    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.

    展开全文
  • 安卓日历 NCalendar特点:3种常见日历交互方式,MIUI系统日历:miui9、miui10、华为emui,miui9和钉钉日历类似,华为emui和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

    日历拉伸

    7f3ca522bf902e5baebfa627fbf84477.gif

    下载demo:

    使用方法

    Gradle

    implementation 'com.necer.ncalendar:ncalendar:4.3.8'

    implementation 'com.necer.ncalendar:ncalendar:4.4.1' 项目升级到androidx

    月周切换

    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"

    app:todaySolarTextColor="#ff00ff"

    app:selectCircleColor="#00c3aa"

    app:hollowCircleColor="#00c3aa"

    android:layout_height="300dp" />

    周日历

    android:layout_width="match_parent"

    app:lunarTextColor="#00aa00"

    android:layout_height="50dp" />

    注意

    NCalendar(Miui9Calendar、Miui10Calendar、EmuiCalendar)内部TargetView可以是除ScrollView、ListView、GridView之外的任意View,处理滑动的内容请使用RecyclerView和NestedScrollView等实现了NestedScrollingChild的View

    如果布局文件中,内部实际滑动的TargetView有多个父View,恰好也有实现了NestedScrollingChild的父View,则需要给实际滑动的子View设置tag(“@string/factual_scroll_view”),不然可能会出现滑动异常,此种情况在下拉刷新中比较常见

    交流群

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

    主要Api

    月日历、周日历、折叠月周日历共同拥有的api

    /**

    * 设置选中模式

    *

    * @param selectedMode SINGLE_SELECTED--日历默认选中模式 每个页面都有选中,左右页面为加减一月或者一周后的日期

    * SINGLE_UNSELECTED--单个选中,不点击选中日期不会改变,翻页不改变选中日期

    * MULTIPLE--多选,多个选中,累计选中

    */

    void setSelectedMode(SelectedModel selectedMode);

    /**

    * 多选个数和模式

    *

    * @param multipleNum 多选限制的个数

    * @param multipleNumModel FULL_CLEAR--超过清除所有

    * FULL_REMOVE_FIRST--超过清除第一个

    */

    void setMultipleNum(int multipleNum, MultipleNumModel multipleNumModel);

    //默认选中时,是否翻页选中第一个,只在selectedMode==SINGLE_SELECTED有效

    void setDefaultSelectFitst(boolean isDefaultSelectFitst);

    //跳转日期

    void jumpDate(String formatDate);

    void jumpDate(int year, int month, int day);

    //跳转月份

    void jumpMonth(int year, int month);

    //上一页 上一周 上一月

    void toLastPager();

    //下一页 下一周 下一月

    void toNextPager();

    //回到今天

    void toToday();

    //设置自定义绘制类

    void setCalendarPainter(CalendarPainter calendarPainter);

    //刷新日历

    void notifyCalendar();

    //设置初始化日期

    void setInitializeDate(String formatInitializeDate);

    //设置初始化日期和可用区间

    void setDateInterval(String startFormatDate, String endFormatDate, String formatInitializeDate);

    //设置可用区间

    void setDateInterval(String startFormatDate, String endFormatDate);

    //单选日期变化监听

    void setOnCalendarChangedListener(OnCalendarChangedListener onCalendarChangedListener);

    //多选日期变化监听

    void setOnCalendarMultipleChangedListener(OnCalendarMultipleChangedListener onCalendarMultipleChangedListener);

    //设置点击了不可用日期监听

    void setOnClickDisableDateListener(OnClickDisableDateListener onClickDisableDateListener);

    //获取绘制类

    CalendarPainter getCalendarPainter();

    //获取全部选中的日期集合

    List getAllSelectDateList();

    //获取当前页面选中的日期集合

    List getCurrectSelectDateList();

    //获取当前页面的数据 如果是月周折叠日历 周状态下获取的是一周的数据,月状态下获取的一月的数据

    List getCurrectDateList();

    折叠月周日历miui9,miui10,emui 拥有的api

    //回到周状态 只能从月->周

    void toWeek();

    //回到月状态 可以从周回到月或者从拉伸回到周

    void toMonth();

    //回到拉伸状态 只能从月->拉伸

    void toStretch();

    //设置周滑动到周位置固定

    void setWeekHoldEnable(boolean isWeekHoldEnable);

    //设置月状态下 下拉拉伸

    void setMonthStretchEnable(boolean isMonthStretchEnable);

    //日历月周状态变化回调

    void setOnCalendarStateChangedListener(OnCalendarStateChangedListener onCalendarStateChangedListener);

    //日历 月 周 拉伸 状态滑动监听

    void setOnCalendarScrollingListener(OnCalendarScrollingListener onCalendarScrollingListener);

    //设置日历状态

    void setCalendarState(CalendarState calendarState);

    //获取当前日历的状态 CalendarState.MONTH==月视图 CalendarState.WEEK==周视图 CalendarState.MONTH_STRETCH==日历拉伸状态

    CalendarState getCalendarState();

    添加指示圆点

    此功能为默认 CalendarPainter 类 InnerPainter 的功能,如果设置了自定义 CalendarPainter ,没有此方法,需要自己实现

    List pointList = Arrays.asList("2018-10-01", "2018-11-19", "2018-11-20", "2018-05-23", "2019-01-01");

    InnerPainter innerPainter = (InnerPainter) miui10Calendar.getCalendarPainter();

    innerPainter.setPointList(pointList);

    设置法定节假日

    此功能为默认 CalendarPainter 类 InnerPainter 的功能,如果设置了自定义 CalendarPainter ,没有此方法,需要自己实现

    List holidayList = Arrays.asList("2018-10-01", "2018-11-19", "2018-11-20");

    List holidayList = Arrays.asList("2019-10-01", "2019-11-19", "2019-11-20");

    InnerPainter innerPainter = (InnerPainter) miui10Calendar.getCalendarPainter();

    innerPainter.setLegalHolidayList(holidayList,workdayList);

    替换农历文字及颜色

    此功能为默认 CalendarPainter 类 InnerPainter 的功能,如果设置了自定义 CalendarPainter ,没有此方法,需要自己实现

    InnerPainter innerPainter = (InnerPainter) miui10Calendar.getCalendarPainter();

    Map strMap = new HashMap<>();

    strMap.put("2019-01-25", "测试");

    strMap.put("2019-01-23", "测试1");

    strMap.put("2019-01-24", "测试2");

    innerPainter.setReplaceLunarStrMap(strMap);

    Map colorMap = new HashMap<>();

    colorMap.put("2019-01-25", Color.RED);

    colorMap.put("2019-01-23", Color.GREEN);

    colorMap.put("2019-01-24", Color.parseColor("#000000"));

    innerPainter.setReplaceLunarColorMap(colorMap);

    添加日历拉伸之后的文字显示

    日历支持拉伸之后显示一行文字

    此功能为默认 CalendarPainter 类 InnerPainter 的功能,如果设置了自定义 CalendarPainter ,没有此方法,需要自己实现

    InnerPainter innerPainter = (InnerPainter) miui10Calendar.getCalendarPainter();

    innerPainter.setPointList(pointList);

    Map strMap = new HashMap<>();

    strMap.put("2019-07-01", "测试");

    strMap.put("2019-07-19", "测试1");

    strMap.put("2019-07-25", "测试2");

    innerPainter.setStretchStrMap(strMap);

    自定义

    项目提供两种方式自定义,Canvas绘制和适配器传入View,两种方式都能实现,方法类似,具体参见下面的链接

    写好之后调用下面的方法设置、两中方式取其一,如果同时设置,后面设置的生效

    CalendarPainter ---> setCalendarPainter(CalendarPainter calendarPainter);

    CalendarAdapter ---> setCalendarAdapter(CalendarAdapter calendarAdapter);

    CalendarDate

    CalendarDate 日历中存放日期各种参数的类,包含公历、农历、节气、节日、属相、天干地支等

    public LocalDate localDate;//公历日期

    public Lunar lunar;//农历

    public String solarHoliday;//公历节日

    public String lunarHoliday;//农历节日

    public String solarTerm;//节气

    其中Lunar为农历信息的对象

    public boolean isLeap;//是否闰年

    public int lunarDay;//农历天

    public int lunarMonth;//农历月

    public int lunarYear;//农历年

    public int leapMonth;//闰月

    public String lunarOnDrawStr;//农历位置需要绘制的文字

    public String lunarDayStr;//农历天 描述 廿二等

    public String lunarMonthStr;//农历月 描述

    public String lunarYearStr;//农历年 描述

    public String animals;//生肖

    public String chineseEra;//天干地支

    CalendarDate对象通过 CalendarUtil 获取

    CalendarDate calendarDate = CalendarUtil.getCalendarDate(LocalDate localDate);

    感谢:

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

    农历和节气数据是工具类,多谢

    支持的属性:

    Attributes

    forma

    describe

    solarTextColor

    color

    公历日期的颜色

    lunarTextColor

    color

    农历日期的颜色

    solarHolidayTextColor

    color

    公历节假日的颜色

    lunarHolidayTextColor

    color

    农历节假日的颜色

    solarTermTextColor

    color

    节气颜色

    selectCircleColor

    color

    选中圈的颜色

    holidayColor

    color

    法定节休息日颜色

    workdayColor

    color

    法定节调休工作日颜色

    bgCalendarColor

    color

    日历的背景

    bgChildColor

    color

    日历包含子view的背景

    todaySelectContrastColor

    color

    今天被选中是其他元素的对比色,比如 农历,圆点等

    pointColor

    color

    小圆点的颜色

    pointSize

    dimension

    小圆点的大小

    pointDistance

    dimension

    小圆点到公历的距离

    alphaColor

    integer

    不是本月的日期颜色的透明度0-255

    disabledAlphaColor

    integer

    日期区间之外的地日颜色的透明度0-255

    disabledString

    string

    点击日期区间之外的日期提示语

    todaySolarTextColor

    color

    今天不选中的颜色

    todaySolarSelectTextColor

    color

    今天选中的颜色

    selectCircleRadius

    dimension

    选中圈的半径

    solarTextSize

    dimension

    公历日期字体大小

    lunarTextSize

    dimension

    农历日期字体大小

    lunarDistance

    dimension

    农历日期到公历字体的距离

    holidayTextSize

    dimension

    法定节假日字体的大小

    holidayDistance

    dimension

    法定节假日到公历的距离

    hollowCircleStroke

    dimension

    空心圆的宽度

    hollowCircleColor

    color

    空心圆的边框颜色

    calendarHeight

    dimension

    日历的高度

    duration

    integer

    日历自动滑动的时间

    isShowLunar

    boolean

    是否显示农历

    isShowHoliday

    boolean

    是否显示法定节假日

    isDefaultSelect

    boolean

    是否默认选中(只对单个月日历或者周日历有效)

    defaultCalendar

    enum

    默认视图 week 或者 month

    pointLocation

    enum

    指示点的文职 up(在公历的上方) 或者 down(在公历的下方) 默认是up

    firstDayOfWeek

    enum

    一周开始的星期天还是星期一 sunday 或者 monday 默认是sunday

    holidayLocation

    enum

    法定节假日相对公历日期的位置 top_right(右上方)、top_left(左上方)、bottom_right(右下方)、bottom_left(左下方)

    stretchTextSize

    dimension

    拉伸之后显示字体的大小

    stretchTextColor

    color

    拉伸之后显示字体的颜色

    stretchTextDistance

    dimension

    拉伸显示的字体距离矩形中心的距离

    stretchCalendarHeight

    dimension

    拉伸之后的高度

    isAllMonthSixLine

    boolean

    是否每个月份都占用6行,默认为flase

    selectSolarTextColorColor

    color

    选中公历颜色

    selectLunarTextColor

    color

    选中农历颜色

    isShowNumberBackground

    boolean

    是否显示数字背景

    numberBackgroundTextSize

    dimension

    数字背景字体大小

    numberBackgroundTextColor

    color

    数字背景字体颜色

    numberBackgroundAlphaColor

    integer

    数字背景字体透明度0-255

    isLastNextMonthClickEnable

    boolean

    月日历上下月是否可点击

    更新日志

    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.

    展开全文
  • android 日历

    2017-04-01 11:11:40
    android日历 底部listview 类似小米日历
  • Android日历

    2016-01-18 15:38:59
    Android日历第一个版本,功能比较简单,日历界面,支持增加查看事件。
  • Android 日历

    2013-07-05 11:18:02
    Android 日历代码一份,简单实用,可以滑动,适合初学者
  • 共享资源 安卓日历源码
  • 安卓 android 日历 桌面组件 widget 我的博客首页 http://blog.csdn.net/u013506037/article/details/39210755

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,527
精华内容 10,610
关键字:

安卓日历