CalenderView

Android上一个非常优雅、高度自定义、性能高效的日历控件,完美支持周视图,支持标记、自定义颜色、农历等,任意控制月视图显示、任意日期拦截条件、自定义周起始等。Canvas绘制,极速性能、占用内存低,,支持简单定制即可实现任意自定义布局、自定义UI,支持收缩展开、性能非常高效,

这个控件内存和效率优势相当明显,而且真正做到收缩+展开,适配多种场景,支持同时多种颜色标记日历事务,支持多点触控,你真的想不到日历还可以如此优雅!更多参考用法请移步Demo,Demo实现了一些精美的自定义效果,用法仅供参考。

插拔式设计

插拔式设计:好比插座一样,插上灯泡就会亮,插上风扇就会转,看用户需求什么而不是看插座有什么,只要是电器即可。此框架使用插拔式,既可以在编译时指定年月日视图,如:app:month_view="xxx.xxx.MonthView.class",也可在运行时动态更换年月日视图,如:CalendarView.setMonthViewClass(MonthView.Class),从而达到UI即插即用的效果,相当于框架不提供UI实现,让UI都由客户端实现,不至于日历UI都千篇一律,只需遵守插拔式接口即可随意定制,自由化程度非常高。

AndroidStudio请使用3.5以上版本

support使用版本

implementation 'com.haibin:calendarview:3.6.8'

Androidx使用版本

implementation 'com.haibin:calendarview:3.6.9'

com.haibin

calendarview

3.6.9

pom

混淆proguard-rules

-keepclasseswithmembers class * {

public (android.content.Context);

}

或者针对性的使用混淆,请自行配置测试!

-keep class your project path.MonthView {

public (android.content.Context);

}

-keep class your project path.WeekBar {

public (android.content.Context);

}

-keep class your project path.WeekView {

public (android.content.Context);

}

-keep class your project path.YearView {

public (android.content.Context);

}

效果预览

功能性展示

年视图和范围选择风格

中国式变态需求风格

收缩展开的魅族风格效果a

全屏和多彩风格

进度条风格

星系图风格

特别的,请注意不要复制这三个路径,自行替换您自己的自定义路径

app:month_view="com.haibin.calendarviewproject.simple.SimpleMonthView"

app:week_view="com.haibin.calendarviewproject.simple.SimpleWeekView"

app:week_bar_view="com.haibin.calendarviewproject.EnglishWeekBar"

使用方法

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

app:default_status="shrink"

app:calendar_show_mode="only_week_view"

app:calendar_content_view_id="@+id/recyclerView">

android:id="@+id/calendarView"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#fff"

app:month_view="com.haibin.calendarviewproject.simple.SimpleCalendarCardView"

app:week_view="com.haibin.calendarviewproject.simple.SimpleWeekView"

app:week_bar_view="com.haibin.calendarviewproject.EnglishWeekBar"

app:calendar_height="50dp"

app:current_month_text_color="#333333"

app:current_month_lunar_text_color="#CFCFCF"

app:min_year="2004"

app:other_month_text_color="#e1e1e1"

app:scheme_text="假"

app:scheme_text_color="#333"

app:scheme_theme_color="#333"

app:selected_text_color="#fff"

app:selected_theme_color="#333"

app:week_start_with="mon"

app:week_background="#fff"

app:month_view_show_mode="mode_only_current"

app:week_text_color="#111" />

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#d4d4d4" />

CalendarView attrs

CalendarView api

public void setRange(int minYear, int minYearMonth, int minYearDay,

int maxYear, int maxYearMonth, int maxYearDay) ;//置日期范围

public int getCurDay(); //今天

public int getCurMonth(); //当前的月份

public int getCurYear(); //今年

public boolean isYearSelectLayoutVisible();//年月份选择视图是否打开

public void closeYearSelectLayout();//关闭年月视图选择布局

public void showYearSelectLayout(final int year); //快速弹出年份选择月份

public void setOnMonthChangeListener(OnMonthChangeListener listener);//月份改变事件

public void setOnYearChangeListener(OnYearChangeListener listener);//年份切换事件

public void setOnCalendarSelectListener(OnCalendarSelectListener listener)//日期选择事件

public void setOnCalendarLongClickListener(OnCalendarLongClickListener listener);//日期长按事件

public void setOnCalendarLongClickListener(OnCalendarLongClickListener listener, boolean preventLongPressedSelect);//日期长按事件

public void setOnCalendarInterceptListener(OnCalendarInterceptListener listener);//日期拦截和日期有效性绘制

public void setSchemeDate(Map mSchemeDates);//标记日期

public void update();//动态更新

public Calendar getSelectedCalendar(); //获取选择的日期

/**

* 特别的,如果你需要自定义或者使用其它选择器,可以用以下方法进行和日历联动

*/

public void scrollToCurrent();//滚动到当前日期

public void scrollToCurrent(boolean smoothScroll);//滚动到当前日期

public void scrollToYear(int year);//滚动到某一年

public void scrollToPre();//滚动到上一个月

public void scrollToNext();//滚动到下一个月

public void scrollToCalendar(int year, int month, int day);//滚动到指定日期

public Calendar getMinRangeCalendar();//获得最小范围日期

public Calendar getMaxRangeCalendar();//获得最大范围日期

/**

* 设置背景色

*

* @param monthLayoutBackground 月份卡片的背景色

* @param weekBackground 星期栏背景色

* @param lineBg 线的颜色

*/

public void setBackground(int monthLayoutBackground, int weekBackground, int lineBg)

/**

* 设置文本颜色

*

* @param curMonthTextColor 当前月份字体颜色

* @param otherMonthColor 其它月份字体颜色

* @param lunarTextColor 农历字体颜色

*/

public void setTextColor(int curMonthTextColor,int otherMonthColor,int lunarTextColor)

/**

* 设置选择的效果

*

* @param style 选中的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE

* @param selectedThemeColor 选中的标记颜色

* @param selectedTextColor 选中的字体颜色

*/

public void setSelectedColor(int style, int selectedThemeColor, int selectedTextColor)

/**

* 设置标记的色

*

* @param style 标记的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE

* @param schemeColor 标记背景色

* @param schemeTextColor 标记字体颜色

*/

public void setSchemeColor(int style, int schemeColor, int schemeTextColor)

/**

* 设置星期栏的背景和字体颜色

*

* @param weekBackground 背景色

* @param weekTextColor 字体颜色

*/

public void setWeeColor(int weekBackground, int weekTextColor)

CalendarLayout api

public void expand(); //展开

public void shrink(); //收缩

public boolean isExpand();//是否展开了

CalendarLayout attrs

Licenses

Copyright (C) 2013 huanghaibin_dev huanghaibin_dev@163.com

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 自定义周日历,CalendarView相关推荐

  1. android++日历示例,Android开发之日历CalendarView用法示例

    本文实例讲述了android开发之日历calendarview用法.分享给大家供大家参考,具体如下: 简介: 1.calendarview是安卓自带的一个日历控件 2.在主活动中 通过设置setond ...

  2. Android 自定义实现日历

    Android 自定义实现日历 开发工具AndroidStudio,使用组件GridView 实现步骤以及原理 具体实现 开发工具AndroidStudio,使用组件GridView 实现步骤以及原理 ...

  3. android studio日历小程序,Android开发之日历CalendarView用法示例

    本文实例讲述了Android开发之日历CalendarView用法.分享给大家供大家参考,具体如下: 简介: 1.CalendarView是安卓自带的一个日历控件 2.在主活动中 通过设置setOnD ...

  4. android日历价格控件,Android 自定义价格日历控件

    介绍 上个星期项目有一个日历价格的需求,类似一个商品在不同的日期价格可能会不同,由于时间给得特别紧所以打算找个合适的开源项目进行修改.参考了网上大多数是通过继承view直接draw一个monthVie ...

  5. Android中自定义农历日历,CalendarView Android 上一个优雅、万能自定义 UI、性能高效的日历控件,热插拔!热插拔!热插拔!重要的事 @codeKK Android开源站...

    An elegant CalendarView on Android platform. Freely draw UI with canvas, fast.efficient and low memo ...

  6. Android自定义预定日历,并且显示阴历

    最近有需要用户可以通过日历选择时间去预定,并且还要显示阴历日期节日等的需求,找了很多相关的开源的也没有发现类似功能的,有的是只有公历日期没有阴历,有的带有阴历的代码又看不懂(有些一句注释都没有,看的我 ...

  7. android 仿三星周日历,Android Calendar Provider(日历事件)

    这篇文章的目的 写这篇文章的目的,主要是为了记录在日历事件中遇到的2个比较少见,在网上比较难查找资料的问题. 应用背景: 在应用中通过ContentProvider操作系统日历,向系统日历中添加.更新 ...

  8. android 一周日历,(Android)获取一周的第一天

    你好,如果你需要得到当周的第一天"星期一" Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DA ...

  9. android自定义选年控件,Android精美日历控件CalendarView自定义使用完全解析

    项目github地址 此框架采用组合的方式,各个模块互相独立,可自由采用各种提供的控件组合,完全自定义自己需要的UI,周视图和月视图可通过简单自定义任意自由绘制,不怕美工提需求!!!下面教程将介绍如何 ...

最新文章

  1. 数据库架构优化的12种组合方式与风险解读
  2. 贝叶斯分类器期望损失函数理解及衍生的全新理解
  3. createDocumentFragment 详解
  4. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)
  5. pandas中to_csv()和read_csv()参数详解
  6. 20170429,上市公司2016年报全出炉(附最新排行榜)
  7. Flink应用实战案例50篇(一)- Flink SQL 在京东的优化实战
  8. img绝对路径图片显示_使用python爬虫去风景图片网站批量下载图片
  9. robo3t 连接服务器数据库_mongodb开启公共IP访问及Robo 3T连接远程mongodb服务器
  10. YUV格式学习:YUYV、YVYU、UYVY、VYUY格式转换成RGB24
  11. 各种系统扫描磁带驱动器的操作方法
  12. 【500-Lines-or-Less】-【翻译练习】-【chapter-14】-【简单对象模型】-【第三部分】...
  13. 网络调试助手简单使用教程(CM精装版V3.8.2)
  14. 五年饮冰,难凉热血”,一名专科生的求学历程
  15. 转:七大项目管理技术优势
  16. python程序基础知识(一)
  17. thinkpad x1e 隐士进入bios
  18. shell中的括号(小括号,大括号/花括号)的使用方法
  19. 创建Hive外部表,关联HDFS文件
  20. python多级菜单_多级菜单.py

热门文章

  1. Android 长时间 卡顿,安卓手机用的久了会卡顿?这几点才最有用!
  2. 病毒是怎样感染文件的?
  3. matlab 获取edit,关于matlab的gui中获取edit值的问题
  4. 【WinHex篇】WinHex中文设置
  5. 经验原石_哔哩哔哩经验原石怎么用
  6. 元宇宙让新的商业模式找到了商业闭环
  7. 乡镇覆盖率达96%,安能物流赴港会成为中国版“ODFL”吗?
  8. Windows网络通信
  9. boost I 数学领域常用的六个库
  10. C++基础教程(黑马程序员讲义)