• Stars
    star
    264
  • Rank 155,103 (Top 4 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[暂停维护] 简单的日历控件,水平方向日历支持手势滑动切换,跳转月份;垂直方向日历选取区间范围。

MNCalendar

一个简单的日历控件,颜色自定义,水平方向和垂直方向,支持手势滑动,支持区间范围选择;

截图

水平方向日历

垂直方向日历


如何添加

1:Gradle添加:

1.在Project的build.gradle中添加仓库地址

	allprojects {
		repositories {
			...
			maven { url "https://jitpack.io" }
		}
	}

2.在app目录下的build.gradle中添加依赖

	dependencies {
	     compile 'com.github.maning0303:MNCalendar:V1.0.3'
	}

2:源码Module添加:

直接关联calendarlibrary

	compile project(':calendarlibrary')

水平日历使用方法:

1:XML添加:

    //相关自定义属性
    <declare-styleable name="MNCalendar">
            <!--最大支持的年数:不包括当前年-->
            <attr name="mnCalendar_maxYear" format="integer" />
            <!--最小支持的年数:包括当前年-->
            <attr name="mnCalendar_minYear" format="integer" />
    </declare-styleable>

    <com.maning.calendarlibrary.MNCalendar
        android:id="@+id/mnCalendar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:mnCalendar_maxYear="2101"
        app:mnCalendar_minYear="1900" />

2:代码使用:

        /**
         * Item点击监听
         */
        mnCalendar.setOnCalendarItemClickListener(new OnCalendarItemClickListener() {

            @Override
            public void onClick(Date date) {
                //Toast日期----阴历可以自己转:LunarCalendarUtils.solarToLunar(date);
                ToastUtil.showToast(context, "单击:" + sdf_yyy_MM_dd.format(date));

            }

            @Override
            public void onLongClick(Date date) {
                //Toast日期----阴历可以自己转:LunarCalendarUtils.solarToLunar(date);
                ToastUtil.showToast(context, "长按:" + sdf_yyy_MM_dd.format(date));
            }
        });

        /**
         * 日历改变监听
         */
        mnCalendar.setOnCalendarChangeListener(new OnCalendarChangeListener() {
            @Override
            public void onPageChange(Date date) {
                ToastUtil.showToast(context, sdf.format(date));
            }
        });


    /**
     *  自定义设置相关
     */
    MNCalendarConfig build = new MNCalendarConfig.Builder()
            //星期的文字颜色
            .setMnCalendar_colorWeek("#00ff00")
            //阴历的颜色
            .setMnCalendar_colorLunar("#FF0000")
            //阳历的颜色
            .setMnCalendar_colorSolar("#9BCCAF")
            //今天的背景色
            .setMnCalendar_colorTodayBg("#00FFFF")
            //今天的文字颜色
            .setMnCalendar_colorTodayText("#000000")
            //不是本月的文字颜色
            .setMnCalendar_colorOtherMonth("#F1EDBD")
            //标题的颜色
            .setMnCalendar_colorTitle("#FF0000")
            //选中日期的背景色
            .setMnCalendar_colorSelected("#FFFF00")
            //是否显示阴历
            .setMnCalendar_showLunar(true)
            //是否显示标题
            .setMnCalendar_showWeek(true)
            //显示标题的样式
            .setMnCalendar_TitleDateFormat("yyyy年MM月")
            .build();
    mnCalendar.setConfig(build);


    //设置日历相关事件
    ArrayList<MNCalendarEventModel> mEventDatas = new ArrayList<>();
    MNCalendarEventModel mnCalendarEventModel = new MNCalendarEventModel();
    mnCalendarEventModel.setEventDate(sdf_yyy_MM_dd.parse("2017-11-22"));
    mnCalendarEventModel.setEventInfo("班");
    mnCalendarEventModel.setEventBgColor("#FF00FF");
    mnCalendarEventModel.setEventTextColor("#FFFFFF");
    mEventDatas.add(mnCalendarEventModel);

    mnCalendarEventModel = new MNCalendarEventModel();
    mnCalendarEventModel.setEventDate(sdf_yyy_MM_dd.parse("2017-11-08"));
    mnCalendarEventModel.setEventInfo("议");
    mnCalendarEventModel.setEventBgColor("#FF0000");
    mnCalendarEventModel.setEventTextColor("#FFFFFF");
    mEventDatas.add(mnCalendarEventModel);

    mnCalendarEventModel = new MNCalendarEventModel();
    mnCalendarEventModel.setEventDate(sdf_yyy_MM_dd.parse("2017-10-29"));
    mnCalendarEventModel.setEventInfo("假");
    mnCalendarEventModel.setEventBgColor("#0000FF");
    mnCalendarEventModel.setEventTextColor("#FFFFFF");
    mEventDatas.add(mnCalendarEventModel);

    mnCalendarEventModel = new MNCalendarEventModel();
    mnCalendarEventModel.setEventDate(sdf_yyy_MM_dd.parse("2018-01-25"));
    mnCalendarEventModel.setEventInfo("差");
    mnCalendarEventModel.setEventBgColor("#000000");
    mnCalendarEventModel.setEventTextColor("#FFFFFF");
    mEventDatas.add(mnCalendarEventModel);
    //设置事件
    mnCalendar.setEventDatas(mEventDatas);

3:其它方法查看Demo详情

-------------------------华丽分割线--------------------------------

垂直日历使用方法:

1:XML添加:

    <com.maning.calendarlibrary.MNCalendarVertical
            android:id="@+id/mnCalendarVertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

2:代码使用:

     /**
      * 区间选取完成监听
      */
     mnCalendarVertical.setOnCalendarRangeChooseListener(new OnCalendarRangeChooseListener() {
         @Override
         public void onRangeDate(Date startDate, Date endDate) {
             String startTime = sdf.format(startDate);
             String endTime = sdf.format(endDate);
             Toast.makeText(context, "开始日期:" + startTime + ",结束日期:" + endTime, Toast.LENGTH_SHORT).show();
         }
     });


    /**
     *  自定义设置相关
     */
     MNCalendarVerticalConfig mnCalendarVerticalConfig = new MNCalendarVerticalConfig.Builder()
             .setMnCalendar_showWeek(true)                   //是否显示星期栏
             .setMnCalendar_showLunar(true)                  //是否显示阴历
             .setMnCalendar_colorWeek("#B07219")             //星期栏的颜色
             .setMnCalendar_titleFormat("yyyy-MM")           //每个月的标题样式
             .setMnCalendar_colorTitle("#FF0000")            //每个月标题的颜色
             .setMnCalendar_colorSolar("#ff0fc7")            //阳历的颜色
             .setMnCalendar_colorLunar("#00ff00")            //阴历的颜色
             .setMnCalendar_colorBeforeToday("#F1EDBD")      //今天之前的日期的颜色
             .setMnCalendar_colorRangeBg("#9930C553")        //区间中间的背景颜色
             .setMnCalendar_colorRangeText("#000000")        //区间文字的颜色
             .setMnCalendar_colorStartAndEndBg("#258C3E")    //开始结束的背景颜色
             .setMnCalendar_countMonth(3)                    //显示多少月(默认6个月)
             .build();
     mnCalendarVertical.setConfig(mnCalendarVerticalConfig);

3:其它方法查看Demo详情

更新日志:

TODO :下一版本计划

    1:去掉RecyclerView 使用View绘制每月
    2:优化卡顿

V1.0.3:

    1:水平日历单选去掉阴历返回(返回后自己转换,提供转换方法)
    2:水平方向切换使用ViewPager
    3:增加日历点击效果
    4:增加日历事件集合
    5:自定义属性最大最小年支持

V1.0.2:

    1:水平日历单选增加阴历返回
    2:水平日历标题样式增加自定义
    3:垂直日历优化快速滑动卡顿问题

感谢:

OneCalendarView

CalendarView

More Repositories

1

MNImageBrowser

一个图片浏览框架,支持AndroidX,支持Fresco,支持微博长图,类似微信图片浏览,手势向下滑动关闭,图片加载引擎自定义,支持长按,单击监听,切换监听,自定义任意的遮罩层,实现各种效果,支持横竖屏切换,简单方便。
Java
738
star
2

GankMM

(Material Design & MVP & Retrofit + OKHttp & RecyclerView ...)Gank.io Android客户端:每天一张美女图片,一个视频短片,若干Android,iOS等程序干货,周一到周五每天更新,数据全部由 干货集中营 提供。
Java
572
star
3

MNProgressHUD

一个常用的自定义弹框封装(适配AndroidX),加载ProgressDialog,状态显示的StatusDialog和自定义Toast,全部支持背景颜色,圆角,边框和文字的自定义,构建者模式,链式调用。
Java
401
star
4

MNUpdateAPK

Android APK Update 版本更新的下载和安装,适配7.0-11.0系统
Java
368
star
5

MNCrashMonitor

MNCrashMonitor 监听程序崩溃日志,直接页面展示崩溃日志列表,调试方便,测试人员可以随时给程序猿查看日志详情,可以动态添加日志内容,手机直接查看日志内容可以分享,复制,生成长截图。
Java
283
star
6

MNZXingCode

快速集成zxing二维码扫描,生成二维码,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,自定义Activity,多个二维码扫码(zxing:core:3.3.3/3.4.0)
Java
254
star
7

MNMLKitScanner

基于Google ML Kit 快速集成二维码扫描,速度比zxing快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码
Java
189
star
8

MNPasswordEditText

Android验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框) 类似微信支付宝的密码输入框等
Java
177
star
9

MNSwipeToLoadDemo

利用SwipeToLoadLayout实现的各种下拉刷新效果(饿了吗,京东,百度外卖,美团外卖,天猫下拉刷新等)
Java
134
star
10

MNVideoPlayer

(暂停维护)SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,手势快进快退、调节音量,亮度等。------代码简单,基础应用-----
Java
124
star
11

SwitcherView

滚动的广告栏文字展示控件
Java
81
star
12

MClearEditText

带有删除功能的EditText,可以自定义删除图片,自定义下划线等
Java
62
star
13

MNChangeSkin

Android夜间模式,通过Theme实现
Java
49
star
14

GankMM_iOS

(iOS版)干货集中营:每天提供一张美女图片和若干程序干货。
Objective-C
26
star
15

MNCustomCamera

一个自定义相机,只拍摄相框中的图片(身份证拍摄等场景)
Java
13
star
16

MNXUtilsDB

xUtils3 数据库模块单独抽取出来,方便使用!
Java
6
star
17

MNCustomCamera-iOS

自定义相机(拍摄指定区域)
Objective-C
4
star
18

MNBaseRecyclerViewAdapter

抽取BaseRecyclerViewAdapter,简化代码,支持添加头尾布局。
Java
4
star
19

MNGitHubStars-Android

归类自己GitHub标记的项目
4
star
20

MNHotFix

QQ空间热修复实践,动态添加dex文件,ASM插桩
Java
3
star
21

MNPickerView-iOS

iOS 滚轮选择器(时间选择和单项选择)
Objective-C
2
star
22

GankMM-WX

练手微信小程序:使用干货集中营的数据!
JavaScript
1
star
23

RobustDemo

美团robust热修复测试
Java
1
star
24

MNOkhttpUtils

okhttp 网络请求
Java
1
star