# MonthWeekMaterialCalendarView
[![](https://jitpack.io/v/idic779/monthweekmaterialcalendarview.svg)](https://jitpack.io/#idic779/monthweekmaterialcalendarview)
[![API](https://img.shields.io/badge/API-22%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=22)
[apk download](https://www.pgyer.com/PUxF)
![p.jpg](https://github.com/idic779/MonthWeekMaterialCalendarView/raw/master/QRCode.png)
#### 觉得有帮助的可以给个star,有问题联系 [email protected] QQ 290950778,有定制问题直接提issue
![样式.gif](http://upload-images.jianshu.io/upload_images/2672721-d191fe401c5b22c9.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/600)
![水滴效果.gif](http://upload-images.jianshu.io/upload_images/2672721-6efd3e0c7670f44d.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/600)
![p1.jpg](http://upload-images.jianshu.io/upload_images/2672721-53133f774ecced59.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/600/h/436)
![p2.jpg](http://upload-images.jianshu.io/upload_images/2672721-5adebcc0efb34d17.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/600/h/436)
可以点击进去查看实现过程
[纵享丝滑滑动切换的周月日历,水滴效果,丰富自定义日历样式,仿小米日历](https://juejin.im/post/5a631efd6fb9a01ca8720f80)
之前开发任务中有涉及到年月日日历的切换效果,由于是需要联动,想到的方向大概有3种,要么通过处理view的touch事件,要么是通过自定义behavior去实现,要么是通过ViewDragHelper这个神器去实现,网上比较多的是通过自定义bahavior去实现,本文使用的是第三种方法,实现的是一个可高度定制自由切换的周月日历视图,提供一种思路去实现页面联动效果。
#### features
* 可以控制是否允许左右滑动,上下滑动,切换年月
* 流畅的上下周月模式切换
* 允许选择农历和普通日历
* 丰富自定义日历样式
* 设置每周的第一天
* 设置某一天不允许选中
* 基于material-calendarview 这个库实现,可以下载源码根据需求定制效果
#### 更新日志
#### V1.7
支持grid and staggeredgrid layoutManager
#### Usages
# step 1 : 添加依赖
```
gradle
allprojects {
repositories {
......
maven { url 'https://jitpack.io' }
}
}
dependencies {
......
compile 'com.github.idic779:monthweekmaterialcalendarview:1.7'
}
```
# step 2: 添加布局
```
<com.amy.monthweek.materialcalendarview.MonthWeekMaterialCalendarView
android:id="@+id/slidelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/linearlayout">
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView_month_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:mcv_calendarMode="month"
app:mcv_showOtherDates="other_months"
app:mcv_showWeekView="false" />
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView_week_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:visibility="invisible"
app:mcv_calendarMode="week"
app:mcv_showTopBar="false"
app:mcv_showWeekView="false" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical" />
<LinearLayout
android:id="@+id/weekview_top"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="@color/colorPrimary"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周日" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周一" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周二" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周三" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周四" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周五" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="周六" />
</LinearLayout>
</com.amy.monthweek.materialcalendarview.MonthWeekMaterialCalendarView>
```
# step 3: 如何使用
* 底部的recyclerView的layoutManager要实现ILayoutManager接口,设置是否允许上下滑动,
例如示例中的[CustomLinearLayoutManager.java](https://github.com/idic779/monthweekmaterialcalendarview/blob/master/app/src/main/java/com/amy/monthweekmaterialcalendarview/CustomLinearLayoutManager.java)
#### 设置当前日期,日历才会滚动到对应日期
monthWeekMaterialCalendarView.setCurrentDate(selectedDate);
#### 设置选中日期
monthWeekMaterialCalendarView.setSelectedDate(selectedDate)
#### 添加日历的样式,例如红点 或者自定义图案
monthWeekMaterialCalendarView.addDecorator(new EventDecorator(Color.RED, dates))
#### 移除日历样式
monthWeekMaterialCalendarView.removeDecorators();
#### 设置当前的模式
monthWeekMaterialCalendarView.setMode(MonthWeekMaterialCalendarView.Mode.MONTH)
#### 跳转到上一个月
monthWeekMaterialCalendarView.goToPrevious();
#### 跳转到下个月
monthWeekMaterialCalendarView.goToNext();
#### 设置是否允许竖直拖动,默认是允许拖动切换周月模式
monthWeekMaterialCalendarView.setCanDrag
#### 设置是否允许左右滑动
monthWeekMaterialCalendarView.setPagingEnabled
#### 添加选中日期、模式改变 或者月份改变的回调
```java
monthWeekMaterialCalendarView.state().edit()
//设置最大最小日期
.setMinimumDate(new CalendarDay(2017,1,1))
.setMaximumDate(new CalendarDay(2018,3,1))
.setSlideModeChangeListener(new MonthWeekMaterialCalendarView.SlideModeChangeListener() {
@Override
public void modeChange(MonthWeekMaterialCalendarView.Mode mode) {
}
}).setSlideDateSelectedlistener(new MonthWeekMaterialCalendarView.SlideDateSelectedlistener() {
@Override
public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
}
}).setSlideOnMonthChangedListener(new MonthWeekMaterialCalendarView.SlideOnMonthChangedListener() {
@Override
没有合适的资源?快使用搜索试试~ 我知道了~
Androidfxmrl_android_bottledoi_源码
共161个文件
xml:68个
java:65个
png:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 31 浏览量
2021-10-04
02:40:44
上传
评论
收藏 2.28MB ZIP 举报
温馨提示
Android 仿小米日历纵享丝滑滑动切换的周月日历,丰富自定义日历样式
资源推荐
资源详情
资源评论
收起资源包目录
Androidfxmrl_android_bottledoi_源码 (161个子文件)
monthweekview.apk 1.84MB
gradlew.bat 2KB
.gitignore 460B
.gitignore 7B
.gitignore 7B
build.gradle 3KB
build.gradle 1KB
build.gradle 739B
settings.gradle 35B
gradlew 5KB
gradle-wrapper.jar 52KB
MaterialCalendarView.java 71KB
MonthWeekMaterialCalendarView.java 35KB
DropIndicator.java 20KB
CalendarUtils.java 16KB
CalendarSmoothActivity.java 11KB
CalendarPagerView.java 11KB
CalendarPagerAdapter.java 10KB
DayView.java 10KB
CalendarActivity.java 9KB
CalendarDay.java 8KB
TitleChanger.java 5KB
DayViewFacade.java 4KB
WeekPagerAdapter.java 3KB
MonthPagerAdapter.java 2KB
CalendarUtils.java 2KB
DotSpan.java 2KB
CalendarWeekDayFormatterTest.java 2KB
CalendarPager.java 2KB
LunarSpan.java 2KB
DateRangeIndexTest.java 2KB
DirectionButton.java 2KB
Experimental.java 1KB
CalendarWeekDayFormatter.java 1KB
PrimeDayDisableDecorator.java 1KB
WeekDayView.java 1KB
OneDayDecorator.java 1KB
ColorDecorator.java 1KB
RestSpan.java 1KB
HighlightWeekendsDecorator.java 1KB
SingleItemViewBinder.java 1KB
MonthArrayTitleFormatter.java 1KB
MonthView.java 1KB
WeekView.java 1KB
DateFormatDayFormatter.java 995B
RemindDecorator.java 961B
CustomLinearLayoutManager.java 951B
DateFormatTitleFormatter.java 951B
EventDecorator.java 925B
MySelectorDecorator.java 864B
WeeklyRangeIndexTest.java 852B
ExampleInstrumentedTest.java 838B
ArrayWeekDayFormatter.java 835B
MainActivity.java 819B
WeekDayFormatter.java 771B
DayFormatter.java 752B
ColorSpan.java 725B
CustomTitleFormatter.java 701B
OnDateSelectedListener.java 676B
BetterViewPager.java 675B
OnRangeSelectedListener.java 617B
DayViewDecorator.java 603B
EnableOneToTenDecorator.java 589B
TitleFormatter.java 561B
AnimatorListener.java 454B
OnMonthChangedListener.java 448B
ExampleUnitTest.java 445B
Preference.java 344B
DecoratorResult.java 310B
DateRangeIndex.java 264B
SlideAnimatorlistener.java 264B
CalendarMode.java 263B
BaseAnimatorlistener.java 262B
ILayoutManager.java 261B
SlideMonthInterface.java 226B
SingleItem.java 132B
LICENSE 11KB
README.md 12KB
p1.png 450KB
QRCode.png 26KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher.png 5KB
ic_launcher.png 3KB
ic_launcher.png 2KB
ic_my_selector.png 1KB
rest.png 952B
mcv_action_previous.png 522B
mcv_action_next.png 518B
proguard-rules.pro 659B
proguard-rules.pro 644B
gradle.properties 730B
gradle-wrapper.properties 233B
activity_calendar_smooth.xml 8KB
activity_calendar.xml 7KB
attrs.xml 3KB
misc.xml 3KB
recyclerview_v7_25_1_0.xml 1KB
item_single_item.xml 924B
support_media_compat_25_1_0.xml 830B
共 161 条
- 1
- 2
资源评论
Dyingalive
- 粉丝: 87
- 资源: 4808
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功