原文简书地址(http://www.jianshu.com/p/7a3f0a37e0ef)
简介
由于项目的需求,研究了众多日历软件。本软件是一款高仿小米、华为、滴答清单、365、钉钉等的自定义日历控件,周月视图平滑滚动,平滑切换,可以在xml文件中进行属性的配置定制,内部切入了RecyclerView。
主要的优点:
1:完全自定义,原理简单,可扩展性强
2:支持平滑切换和快速滑动
3:支持农历和阴历
4:可每周滑动,也可每月滑动
5:定期维护,嘻嘻
不多废话,上图:
具体的使用教程如下(在xml文件中添加如下代码)
<com.jeek.calendar.widget.calendar.schedule.ScheduleLayout
android:id="@+id/slSchedule"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:default_view="week">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/rlMonthCalendar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.jeek.calendar.widget.calendar.month.MonthCalendarView
android:id="@+id/mcvCalendar"
android:layout_width="match_parent"
android:layout_height="@dimen/month_calendar_height"
android:background="@color/colorWrite"
android:overScrollMode="never"
app:month_day_text_size="@integer/calendar_text_size"
app:month_hint_circle_color="@color/bg_color"
app:month_selected_circle_color="@color/bg_color_1"
app:month_selected_circle_today_color="@color/bg_color"
app:month_today_text_color="@color/bg_color" />
</RelativeLayout>
<com.jeek.calendar.widget.calendar.week.WeekCalendarView
android:id="@+id/wcvCalendar"
android:layout_width="match_parent"
android:layout_height="@dimen/week_calendar_height"
android:background="@color/colorWrite"
android:overScrollMode="never"
android:visibility="visible"
app:week_day_text_size="@integer/calendar_text_size"
app:week_hint_circle_color="@color/bg_color"
app:week_selected_circle_color="@color/bg_color_1"
app:week_selected_circle_today_color="@color/bg_color"
app:week_today_text_color="@color/bg_color" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rlScheduleList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground">
<com.jeek.calendar.widget.calendar.schedule.ScheduleRecyclerView
android:id="@+id/rvScheduleList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:orientation="vertical">
</com.jeek.calendar.widget.calendar.schedule.ScheduleRecyclerView>
</RelativeLayout>
</LinearLayout>
</com.jeek.calendar.widget.calendar.schedule.ScheduleLayout>
MonthCalendarView的使用
<com.jeek.calendar.widget.calendar.month.MonthCalendarView
android:id="@+id/mcvCalendar"
android:layout_width="match_parent"
android:layout_height="@dimen/small_month_calendar_height"
app:month_day_text_size="@integer/small_calendar_text_size"
app:month_selected_circle_color="@color/color_select_date_dialog_edit_text_bg_focus"
app:month_selected_circle_today_color="@color/color_select_date_dialog_edit_text_bg_focus"
app:month_show_lunar="true" <!-是否显示农历,默认显示->
app:month_show_task_hint="false" <!-是否显示圆点提示->
app:week_text_size="@integer/small_calendar_text_size"/>
ScheduleLayout的使用
layout_schedule.xml文件,必须包含MonthCalendarView、WeekCalendarView和ScheduleRecyclerView,可以直接引用改文件作为布局。
ScheduleLayout:
app:default_view=”week”
设置日期监听
slSchedule.setOnCalendarClickListener(new OnCalendarClickListener() {
@Override
public void onClickDate(int year, int month, int day) {
//监听获得点击的年月日
}
});
跳转到今天
slSchedule.getMonthCalendar().setTodayToView();
备注:
在xml文件里可以直接设置选中天的背景的颜色,是否要显示农历,今天的颜色等。
源码地址,好用的话,记得star哦!
源码地址,好用的话,记得star哦!
源码地址,好用的话,记得star哦!
重要的事儿说三遍,谢谢!!!!!!
联系我们:
小江Android交流群(259194144),进群备注Android、Github、简书之类的关键词即可。