先看最终实现的效果

   事情是这样的,那一天我仍一如既往的在写代码(看新闻),隔了10米远我就看到一个傻。哦  不对 看见我们的经理走了过来。我的内心是这样的。

 “怎么样,BUG改的怎么样了?”呵呵,虽然我已经改完了,但是作为一个资深程序狗,我深知这句简单的话后面蕴藏的深意

机智的我如此答道:有几个BUG还是有问题,我再看看。

没事,我就随便问问,反正下周上线。我们要加一个签到的功能。

我:我们APP要签到功能干什么?
PM:我看好多APP都有
我:。。。OK,签到不难,一般签到都是送积分送东西什么的,然后要有积分规则吧,积分得能换东西吧,是不是还的弄一个积分商城?
PM:对啊

生活就像QJ,既然不能反抗那就闭目享受吧。
爱哥的datepicker https://github.com/AigeStudio/DatePicker
爱哥 why you are so diao?下载下来运行 基本达到要求
但是有几个地方需要修改,
1.我们不需要滑动,爱哥的datepicker可以四个方向滑动
2.why不能动态更新标志物
3.预先设置选中的日期背景颜色和日历文字颜色有点不搭
来来来,按照一般的尿性 这时候我们需要分析源码了,看看源码,我真想说一句so easy。。so个毛线啊


大致分析一下,不需要完全看懂源码就可以改改。

首先分析如何“画”出一个日历,自定义view要稍微了解一点
1. 日历去掉上面 日 一 二 三 四 五 六 这一行,每个月都是5行7列
2. 画出网格,每个格子填上对应的日期
3. 自适应大小,每个格子的大小应该是根据自定义view中获取的width和height计算出来的
4. 滑动切换日期的原理
前面3个很多同学只要写过自定义view应该都不是太难的事情(算日期什么的太麻烦了),而且我这边要控制不能滑动所以着重看一下滑动切换的原理。

上面的代码画出来大概就是

滑动就是重写onTouchEvent,在MotionEvent.ACTION_MOVE中调用smoothScrollTo就实现了随手指切换日期,在切换成功后会重新invalidate。
回到我们那3个问题上来
1.在monthview中加入isScroll一个变量来控制一下就OK了,调用myDatepicker.setIsScroll(false); //是否允许滑动 false表示左右上下都不能滑动
2.经过调试,发现不能动态更新标志物主要是DPCManager那几个cache没有clear掉,新增dpcManager.clearnDATE_CACHE(); //清除cache后重新设置就好了
3.myDatepicker.setIsSelChangeColor(true, getResources().getColor(R.color.font_white_one)); //设置选择的日期字体颜色为白色,不然有的背景颜色和默认的字体颜色不搭,如果不设置的话就是下面这个效果

还加了一个滑动事件的判断,暂时没卵用monthView.setOnDateScrollChangeListener(new MonthView.OnDateScrollChangeListener() {@Overridepublic void scrollLeft(int year, int month) {String str = "向左滑动=="+"年份="+year+"--月份=="+month;Toast.makeText(context,str,Toast.LENGTH_SHORT).show();}@Overridepublic void scrollRight(int year, int month) {String str = "向右滑动=="+"年份="+year+"--月份=="+month;Toast.makeText(context,str,Toast.LENGTH_SHORT).show();}@Overridepublic void scrollTop(int year, int month) {String str = "向上滑动=="+"年份="+year+"--月份=="+month;Toast.makeText(context,str,Toast.LENGTH_SHORT).show();}@Overridepublic void scrollBottom(int year, int month) {String str = "向下滑动=="+"年份="+year+"--月份=="+month;Toast.makeText(context,str,Toast.LENGTH_SHORT).show();}});

修改过后的代码
下载地址:https://github.com/wushaoge/MySignDate

大家也可以根据自己的需求扩展,比如设置最小日期 最大日期  单独设置能否左右滑动,上下滑动,某些日期不能点击什么的

android签到日历实现相关推荐

  1. Android 签到日历(左右滑动)

    先看一下效果图 根据项目需求选择合适的控件 下面这张图就是根据第一个日历进行的改动 1.创建一个类LunarHelper(阴历) class LunarHelper {private final st ...

  2. html 签到日历,写一个签到日历

    最近项目上写了一个签到页面,其中有一个功能设计的是点击签到,可以查看签到日历,稍微麻烦点的是连续签到的日期间有横线连接,现在总结记录一下: 效果 需求 只显示当前月份的签到日历(其实基于目前的代码扩展 ...

  3. android 日历翻页动画,Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果

    废话不多说,效果图: 自定义控件找自网络,使用相对简单,具体还没有来得及深入研究,只是先用笨方法大概实现了想要的效果,后续有空会仔细研究再更新文章, 本demo切换方法是用的笨方法,也就是由新数字和旧 ...

  4. Android移动开发-Android开发日历时常用的农历和公历换算代码工具类

    下面是与Android开发日历时常用的有关农历计算.公历计算.二十四气节相关的代码工具类的代码. Constant.java逻辑代码如下: package com.fukaimei.calendar. ...

  5. 日历签到 java_android自定义可签到日历

    [实例简介] 一个比较详细的自定义的签到日历.简单易懂,可自行修改 [实例截图] [核心代码] SignCalendar └── SignCalendar ├── AndroidManifest.xm ...

  6. html实现日历签到页面,jquery每日签到日历插件

    这是一款使用jquery来实现的每日签到日历插件源代码.该每日签到插件可以实现签到功能,查看签到次数等,非常实用. 使用方法 在页面中引入样式文件style.css,jquery.min.js和签到j ...

  7. android+高仿+日历,项目源码--Android天气日历精致UI源码

    技术要点: 1. 天气日历精致UI 2. Android的Http通信技术 3. Android的天气信息解析 4. Android的日历信息的统计 5. Andorid的地理位置的管理 6.源码带有 ...

  8. Vue每日签到日历渲染

    Vue每日签到日历渲染 `Vue每日签到日历渲染` `先上图` `template` `script` `style` Vue每日签到日历渲染 先上图 template <template> ...

  9. android 仿旅游日历控件_可能是第十好的Android 开源 日历 Calendar 仿小米

    简介 由于项目的需求,研究了众多日历软件.本软件是一款高仿小米的自定义日历>控件,周月视图平滑滚动,平滑切换,可以在xml文件中进行属性的配置定制,加入你自己的RecyclerView后,实现日 ...

最新文章

  1. 软件工程 项目管理的目标和细节
  2. 微软发布了Spartan项目的细节,并证实了某些流言
  3. opencl fft实例整理
  4. 操作系统实验1—实现单处理机下的进程调度程序
  5. 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
  6. 亲历腾讯WEB前端开发三轮面试经历及面试题
  7. UVALive 6511 Term Project
  8. 1.8 简单卷积网络示例
  9. 全新的移动界面设计素材
  10. 打开含avi格式视频文件的文件夹“死机”问题的解决
  11. Adobe Dreamweaver的使用教程
  12. 在五环六环之间,有最真实的北京
  13. 文章标签设计方法,文章Tags数据库设计方法举例
  14. 中文文本分析, Text-Analysis
  15. 西安的一些互联网公司一览
  16. 编译原理 赋值语句翻译成四元式
  17. 教你四个步骤在Word中设计毕业论文目录
  18. Quartus II 软件编写程序及烧录步骤
  19. 上传和下载歌曲文件(C#)
  20. 简体字与繁体字对照表 “学习繁体字”

热门文章

  1. 【MES】聚酯,纺丝,假捻的工艺路线
  2. 数学------为什么“负负得正”
  3. 判断字符串子序列【python】
  4. Html+css怎样实现纯文字和带图标的按钮
  5. 【CTF基础】有限域椭圆曲线定义与计算方式
  6. win10輸入法,繁體字,簡體字切換
  7. linux c++ 线程支持 多核应用,linux C++多线程服务端开发
  8. 草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想
  9. zutuanxue.com-Linux终端的使用
  10. 二胎准生证办理流程--很有用。