Adroid自定义雅致、性能高效率的日历控件,极致支持周主视图,支持标识、自定义颜色、阴历等,任意操纵月主视图表明、任意日期阻拦标准、自定义周开始等。Canvas制作,急速性能、占有运行内存低,,支持简易订制就可以完成任意自定义合理布局、自定义UI,支持收拢进行、性能十分高效率, 这一控件运行内存和高效率优点十分显著,并且真真正正的做到收拢 进行,兼容多种多样情景,支持与此同时多种多样颜色标识日历事务管理,支持多点触控,你确实意想不到日历还能够如此雅致!大量参照使用方法请换步Demo,Demo完成了4个精致的自定义实际效果。
dependencies {
implementation ‘com.github.Visen123:CalendarView:V1.0’
}
搞混proguard-rules
-keepclasseswithmembers class * {
public <init>(android.content.Context);
}
或是目的性的应用搞混
-keep class your project path.MonthView {
public <init>(android.content.Context);
}
-keep class your project path.WeekBar {
public <init>(android.content.Context);
}
-keep class your project path.WeekView {
public <init>(android.content.Context);
}
尤其的,一定要注意不必拷贝这三个途径,自主更换您自身的自定义途径
app:month_view=\"com.yanyiyun.calendarviewproject.simple.SimpleCalendarCardView\"
app:week_view=\"com.yanyiyun.calendarviewproject.simple.SimpleWeekView\"
app:week_bar_view=\"com.yanyiyun.calendarviewproject.EnglishWeekBar\"
操作方法
<com.yanyiyun.calendarview.CalendarLayout
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\">
<com.yanyiyun.calendarview.CalendarView
android:id=\"@ id/calendarView\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:background=\"#fff\"
app:month_view=\"com.yanyiyun.calendarviewproject.simple.SimpleCalendarCardView\"
app:week_view=\"com.yanyiyun.calendarviewproject.simple.SimpleWeekView\"
app:week_bar_view=\"com.yanyiyun.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.support.v7.widget.RecyclerView
android:id=\"@ id/recyclerView\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:background=\"#d4d4d4\" />
</com.yanyiyun.calendarview.CalendarLayout>
CalendarView attrs
<declare-styleable name=\"CalendarView\">
<attr name=\"calendar_padding\" format=\"dimension\" /><!--日历内部结构上下padding-->
<attr name=\"month_view\" format=\"color\" /> <!--自定义类日历月主视图途径-->
<attr name=\"week_view\" format=\"string\" /> <!--自定义类周主视图途径-->
<attr name=\"week_bar_height\" format=\"dimension\" /> <!--礼拜栏的相对高度-->
<attr name=\"week_bar_view\" format=\"color\" /> <!--自定义类周栏途径,根据自定义则 week_text_color week_background xml设定失效,当仍可java api设定-->
<attr name=\"week_line_margin\" format=\"dimension\" /><!--线框margin-->
<attr name=\"week_line_background\" format=\"color\" /><!--线条颜色-->
<attr name=\"week_background\" format=\"color\" /> <!--礼拜栏的环境-->
<attr name=\"week_text_color\" format=\"color\" /> <!--礼拜栏文字颜色-->
<attr name=\"week_text_size\" format=\"dimension\" /><!--礼拜栏文字尺寸-->
<attr name=\"current_day_text_color\" format=\"color\" /> <!--今日的文字颜色-->
<attr name=\"current_day_lunar_text_color\" format=\"color\" /><!--今天的农历文本颜色-->
<attr name=\"calendar_height\" format=\"string\" /> <!--日历每项的相对高度,56dp-->
<attr name=\"day_text_size\" format=\"string\" /> <!--日数文字尺寸-->
<attr name=\"lunar_text_size\" format=\"string\" /> <!--阴历文字尺寸-->
<attr name=\"scheme_text\" format=\"string\" /> <!--标识文字-->
<attr name=\"scheme_text_color\" format=\"color\" /> <!--标识文字颜色-->
<attr name=\"scheme_month_text_color\" format=\"color\" /> <!--标识日数文字颜色-->
<attr name=\"scheme_lunar_text_color\" format=\"color\" /> <!--标识阴历文字颜色-->
<attr name=\"scheme_theme_color\" format=\"color\" /> <!--标识的颜色-->
<attr name=\"selected_theme_color\" format=\"color\" /> <!--选定颜色-->
<attr name=\"selected_text_color\" format=\"color\" /> <!--选中文字颜色-->
<attr name=\"selected_lunar_text_color\" format=\"color\" /> <!--选定阴历文字颜色-->
<attr name=\"current_month_text_color\" format=\"color\" /> <!--现阶段月份的字体样式颜色-->
<attr name=\"other_month_text_color\" format=\"color\" /> <!--其他月份的字体颜色-->
<attr name=\"current_month_lunar_text_color\" format=\"color\" /> <!--现阶段月份阴历节假日日色调-->
<attr name=\"other_month_lunar_text_color\" format=\"color\" /> <!--其他月份阴历节假日日色调-->
<!-- 年主视图有关 -->
<attr name=\"year_view_month_text_size\" format=\"dimension\" /> <!-- 年主视图月份文字大小 -->
<attr name=\"year_view_day_text_size\" format=\"dimension\" /> <!-- 年主视图月份日期文字大小 -->
<attr name=\"year_view_month_text_color\" format=\"color\" /> <!-- 年主视图月份字体颜色 -->
<attr name=\"year_view_day_text_color\" format=\"color\" /> <!-- 年视图日期字体颜色 -->
<attr name=\"year_view_scheme_color\" format=\"color\" /> <!-- 年主视图标识色调 -->
<attr name=\"min_year\" format=\"integer\" /> <!--最少年代1900-->
<attr name=\"max_year\" format=\"integer\" /> <!--较大年代2099-->
<attr name=\"min_year_month\" format=\"integer\" /> <!--最少年代相匹配月份-->
<attr name=\"max_year_month\" format=\"integer\" /> <!--较大年代相匹配月份-->
<!--月主视图是不是可翻转-->
<attr name=\"month_view_scrollable\" format=\"boolean\" />
<!--周主视图是不是可翻转-->
<attr name=\"week_view_scrollable\" format=\"boolean\" />
<!--年主视图是不是可翻转-->
<attr name=\"year_view_scrollable\" format=\"boolean\" />
<!--配备你喜爱的月主视图表明方式模式-->
<attr name=\"month_view_show_mode\">
<enum name=\"mode_all\" value=\"0\" /> <!--所有表明-->
<enum name=\"mode_only_current\" value=\"1\" /> <!--仅显示现阶段月份-->
<enum name=\"mode_fix\" value=\"2\" /> <!--响应式表明,不容易空出一行,可是会填充-->
</attr>
<!-- 自定周开始 -->
<attr name=\"week_start_with\">
<enum name=\"sun\" value=\"1\" />
<enum name=\"mon\" value=\"2\" />
<enum name=\"sat\" value=\"7\" />
</attr>
<!-- 自定挑选方式 -->
<attr name=\"select_mode\">
<enum name=\"default_mode\" value=\"0\" />
<enum name=\"single_mode\" value=\"1\" />
<enum name=\"range_mode\" value=\"2\" />
</attr>
<!-- 当 select_mode=range_mode -->
<attr name=\"min_select_range\" format=\"integer\" />
<attr name=\"max_select_range\" format=\"integer\" />
</declare-styleable>
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(); //2022年
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<String, Calendar> 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
<!-- 日历表明方式 -->
<attr name=\"calendar_show_mode\">
<enum name=\"both_month_week_view\" value=\"0\" /><!-- 默认设置都是有 -->
<enum name=\"only_week_view\" value=\"1\" /><!-- 仅周主视图 -->
<enum name=\"only_month_view\" value=\"2\" /><!-- 仅月视图 -->
</attr>
<attr name=\"default_status\">
<enum name=\"expand\" value=\"0\" /> <!--默认设置展开-->
<enum name=\"shrink\" value=\"1\" /><!--默认检索-->
</attr>
<attr name=\"calendar_content_view_id\" format=\"integer\" />
<新项目详细地址:https://github.com/Visen123/CalendarView>
勤奋向前走,理想离你非常近
app:month_view=\"com.yanyiyun.calendarviewproject.simple.SimpleCalendarCardView\"
app:week_view=\"com.yanyiyun.calendarviewproject.simple.SimpleWeekView\"
app:week_bar_view=\"com.yanyiyun.calendarviewproject.EnglishWeekBar\"
操作方法
<com.yanyiyun.calendarview.CalendarLayout
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\">
<com.yanyiyun.calendarview.CalendarView
android:id=\"@ id/calendarView\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:background=\"#fff\"
app:month_view=\"com.yanyiyun.calendarviewproject.simple.SimpleCalendarCardView\"
app:week_view=\"com.yanyiyun.calendarviewproject.simple.SimpleWeekView\"
app:week_bar_view=\"com.yanyiyun.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.support.v7.widget.RecyclerView
android:id=\"@ id/recyclerView\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:background=\"#d4d4d4\" />
</com.yanyiyun.calendarview.CalendarLayout>
CalendarView attrs
<declare-styleable name=\"CalendarView\">
<attr name=\"calendar_padding\" format=\"dimension\" /><!--日历内部结构上下padding-->
<attr name=\"month_view\" format=\"color\" /> <!--自定类日历月主视图途径-->
<attr name=\"week_view\" format=\"string\" /> <!--自定类周主视图途径-->
<attr name=\"week_bar_height\" format=\"dimension\" /> <!--礼拜栏的相对高度-->
<attr name=\"week_bar_view\" format=\"color\" /> <!--自定类周栏途径,根据自定则 week_text_color week_background xml设置失效,当仍可java api设置-->
<attr name=\"week_line_margin\" format=\"dimension\" /><!--线框margin-->
<attr name=\"week_line_background\" format=\"color\" /><!--线条色调-->
<attr name=\"week_background\" format=\"color\" /> <!--礼拜栏的背景-->
<attr name=\"week_text_color\" format=\"color\" /> <!--星期栏文字色调-->
<attr name=\"week_text_size\" format=\"dimension\" /><!--礼拜栏文字尺寸-->
<attr name=\"current_day_text_color\" format=\"color\" /> <!--今日的文字色调-->
<attr name=\"current_day_lunar_text_color\" format=\"color\" /><!--今天的农历文字色调-->
<attr name=\"calendar_height\" format=\"string\" /> <!--日历每项的相对高度,56dp-->
<attr name=\"day_text_size\" format=\"string\" /> <!--日数文字尺寸-->
<attr name=\"lunar_text_size\" format=\"string\" /> <!--阴历文字尺寸-->
<attr name=\"scheme_text\" format=\"string\" /> <!--标识文字-->
<attr name=\"scheme_text_color\" format=\"color\" /> <!--标识文字色调-->
<attr name=\"scheme_month_text_color\" format=\"color\" /> <!--标识日数文字色调-->
<attr name=\"scheme_lunar_text_color\" format=\"color\" /> <!--标识阴历文字色调-->
<attr name=\"scheme_theme_color\" format=\"color\" /> <!--标识的色调-->
<attr name=\"selected_theme_color\" format=\"color\" /> <!--选定色调-->
<attr name=\"selected_text_color\" format=\"color\" /> <!--选定文字色调-->
<attr name=\"selected_lunar_text_color\" format=\"color\" /> <!--选定阴历文字色调-->
<attr name=\"current_month_text_color\" format=\"color\" /> <!--现阶段月份的字体颜色-->
<attr name=\"other_month_text_color\" format=\"color\" /> <!--其他月份的字体颜色-->
<attr name=\"current_month_lunar_text_color\" format=\"color\" /> <!--现阶段月份阴历节假日日色调-->
<attr name=\"other_month_lunar_text_color\" format=\"color\" /> <!--其他月份阴历节假日日色调-->
<!-- 年主视图有关 -->
<attr name=\"year_view_month_text_size\" format=\"dimension\" /> <!-- 年主视图月份文字大小 -->
<attr name=\"year_view_day_text_size\" format=\"dimension\" /> <!-- 年主视图月份日期文字大小 -->
<attr name=\"year_view_month_text_color\" format=\"color\" /> <!-- 年主视图月份字体颜色 -->
<attr name=\"year_view_day_text_color\" format=\"color\" /> <!-- 年视图日期字体颜色 -->
<attr name=\"year_view_scheme_color\" format=\"color\" /> <!-- 年主视图标识色调 -->
<attr name=\"min_year\" format=\"integer\" /> <!--最少年代1900-->
<attr name=\"max_year\" format=\"integer\" /> <!--较大年代2099-->
<attr name=\"min_year_month\" format=\"integer\" /> <!--最少年代相匹配月份-->
<attr name=\"max_year_month\" format=\"integer\" /> <!--较大年代相匹配月份-->
<!--月主视图是不是可翻转-->
<attr name=\"month_view_scrollable\" format=\"boolean\" />
<!--周主视图是不是可翻转-->
<attr name=\"week_view_scrollable\" format=\"boolean\" />
<!--年主视图是不是可翻转-->
<attr name=\"year_view_scrollable\" format=\"boolean\" />
<!--配备你喜爱的月主视图表明方式模式-->
<attr name=\"month_view_show_mode\">
<enum name=\"mode_all\" value=\"0\" /> <!--所有表明-->
<enum name=\"mode_only_current\" value=\"1\" /> <!--仅显示现阶段月份-->
<enum name=\"mode_fix\" value=\"2\" /> <!--响应式表明,不容易空出一行,可是会填充-->
</attr>
<!-- 自定周开始 -->
<attr name=\"week_start_with\">
<enum name=\"sun\" value=\"1\" />
<enum name=\"mon\" value=\"2\" />
<enum name=\"sat\" value=\"7\" />
</attr>
<!-- 自定挑选方式 -->
<attr name=\"select_mode\">
<enum name=\"default_mode\" value=\"0\" />
<enum name=\"single_mode\" value=\"1\" />
<enum name=\"range_mode\" value=\"2\" />
</attr>
<!-- 当 select_mode=range_mode -->
<attr name=\"min_select_range\" format=\"integer\" />
<attr name=\"max_select_range\" format=\"integer\" />
</declare-styleable>
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(); //2022年
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<String, Calendar> 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
<!-- 日历表明方式 -->
<attr name=\"calendar_show_mode\">
<enum name=\"both_month_week_view\" value=\"0\" /><!-- 默认设置都是有 -->
<enum name=\"only_week_view\" value=\"1\" /><!-- 仅周主视图 -->
<enum name=\"only_month_view\" value=\"2\" /><!-- 仅月视图 -->
</attr>
<attr name=\"default_status\">
<enum name=\"expand\" value=\"0\" /> <!--默认设置展开-->
<enum name=\"shrink\" value=\"1\" /><!--默认检索-->
</attr>
<attr name=\"calendar_content_view_id\" format=\"integer\" />
<新项目详细地址:https://github.com/Visen123/Calenda
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。