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 可长按拖拽的RecyclerView

    近期项目遇到需要拖拽的RecyclerView来实现需求,首先考虑了ItemTouchHelper 这个类,但是后续使用发现无法把item视图拖出RecyclerView的视图范围,于是打算自定义Re ...

  2. android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item

    前几天写了一片关于RecyclerView滑动删除Item,RecyclerView长按拖拽Item的博客,本来很简单一个使用,阅读量还挺高的,原博客传送门. 今天介绍一个RecyclerView I ...

  3. Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper

    RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我 ...

  4. android ListView和GridView拖拽移位具体实现及拓展

    关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例:              首 ...

  5. RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动

    RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动 度娘搜索RecyclerView长按拖拽排序,很多文章讲解,没找到缩短长按响应时间的,所以自己研究了一下 先看效果 ...

  6. Android仿QQ消息拖拽效果(二)

    前言 本文参考辉哥贝塞尔曲线 - QQ消息汽包拖拽,前面我们使用二阶贝塞尔曲线绘制了拖拽圆点效果Android仿QQ消息拖拽效果(一)(二阶贝塞尔曲线使用),这里我们在此基础之上实现仿QQ消息拖拽爆炸 ...

  7. swift 拖动按钮_Swift下使用UICollectionView 实现长按拖拽功能

    导读 简单用Swift写了一个collectionview的拖拽点击排序效果; 拖拽排序是新闻类的App可以说是必有的交互设计,如今日头条,网易新闻等. 效果 主要代码 手势长按移动 1.给Colle ...

  8. swift 选中长按项_Swift下使用UICollectionView 实现长按拖拽功能

    导读 简单用Swift写了一个collectionview的拖拽点击排序效果; 拖拽排序是新闻类的App可以说是必有的交互设计,如今日头条,网易新闻等. GitHub地址:https://github ...

  9. html5长按 排序,H5 长按 拖拽排序的实现

    H5 长按拖拽排序 产品需求: H5页面的一个列表,需要长按之后 然后拖拽排序; vuedraggable是vue生态圈中一个知名的组件,也是vue.js项目中处理拖拽问题的不二法宝; 它基于Sort ...

最新文章

  1. poj2965 【枚举】
  2. centos7加入第二块网卡无法识别
  3. oracle11g ogg报价,Oracle11g GoldenGate配置错误OGG-00868 Attaching to ASM server
  4. Win7系统桌面壁纸换不了怎么办
  5. 常用的MySQL命令大全
  6. linux 编译.sh,Linux内核编译步骤
  7. pytorch求范数函数——torch.norm
  8. 别再苦恼电脑录屏软件哪个免费了,试试这几款吧
  9. mac连接服务器出错双系统,mac使用bootcamp安装双系统遇到的问题及解决方案
  10. 计算机专业英语课程内容,《计算机专业英语》课程教学大纲
  11. 现代化智能一体化机柜
  12. 免费ICP域名备案查接口
  13. 如何给网站添加CNZZ站长统计功能代码的常用办法
  14. 商业研究(12):下厨房,美食菜谱分享社区及新型电商,唯有美食与爱不可辜负
  15. 安全驾驶:上海科目二-全部科目-笔记整理-祝你考试一把过!
  16. 《Python 深度学习》6.1.3 整合在一起:从原始文本到词嵌入
  17. 华为 DHCP基本配置及概念
  18. linux格式化fat的命令,在Linux中使用mkfs命令格式化磁盘或分区上的文件系统
  19. ThoughtWorks-2021上半年,请24期技术雷达正式发布!
  20. 深圳软件测试培训:自动化测试

热门文章

  1. java 参数内存释放_JNI创建变量和释放变量
  2. 计算机教师自检自查报告,信息技术教学工作自查报告
  3. java canvas 画圆_java – 如何在Android中通过canvas绘制圆?
  4. 镇江高等专科学校计算机考试,镇江市人事考试考工服务平台
  5. python切片的对象_Python 对象切片
  6. shell脚本 猜数字游戏并计数比较次数
  7. 带你学 Redis:Redis简介(一)
  8. 安卓端华为推送集成笔记
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的美食分享网站
  10. java io flush_《文件传输基础——Java IO流》,对其中flush方法的思考