android签到日历实现
先看最终实现的效果
事情是这样的,那一天我仍一如既往的在写代码(看新闻),隔了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签到日历实现相关推荐
- Android 签到日历(左右滑动)
先看一下效果图 根据项目需求选择合适的控件 下面这张图就是根据第一个日历进行的改动 1.创建一个类LunarHelper(阴历) class LunarHelper {private final st ...
- html 签到日历,写一个签到日历
最近项目上写了一个签到页面,其中有一个功能设计的是点击签到,可以查看签到日历,稍微麻烦点的是连续签到的日期间有横线连接,现在总结记录一下: 效果 需求 只显示当前月份的签到日历(其实基于目前的代码扩展 ...
- android 日历翻页动画,Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果
废话不多说,效果图: 自定义控件找自网络,使用相对简单,具体还没有来得及深入研究,只是先用笨方法大概实现了想要的效果,后续有空会仔细研究再更新文章, 本demo切换方法是用的笨方法,也就是由新数字和旧 ...
- Android移动开发-Android开发日历时常用的农历和公历换算代码工具类
下面是与Android开发日历时常用的有关农历计算.公历计算.二十四气节相关的代码工具类的代码. Constant.java逻辑代码如下: package com.fukaimei.calendar. ...
- 日历签到 java_android自定义可签到日历
[实例简介] 一个比较详细的自定义的签到日历.简单易懂,可自行修改 [实例截图] [核心代码] SignCalendar └── SignCalendar ├── AndroidManifest.xm ...
- html实现日历签到页面,jquery每日签到日历插件
这是一款使用jquery来实现的每日签到日历插件源代码.该每日签到插件可以实现签到功能,查看签到次数等,非常实用. 使用方法 在页面中引入样式文件style.css,jquery.min.js和签到j ...
- android+高仿+日历,项目源码--Android天气日历精致UI源码
技术要点: 1. 天气日历精致UI 2. Android的Http通信技术 3. Android的天气信息解析 4. Android的日历信息的统计 5. Andorid的地理位置的管理 6.源码带有 ...
- Vue每日签到日历渲染
Vue每日签到日历渲染 `Vue每日签到日历渲染` `先上图` `template` `script` `style` Vue每日签到日历渲染 先上图 template <template> ...
- android 仿旅游日历控件_可能是第十好的Android 开源 日历 Calendar 仿小米
简介 由于项目的需求,研究了众多日历软件.本软件是一款高仿小米的自定义日历>控件,周月视图平滑滚动,平滑切换,可以在xml文件中进行属性的配置定制,加入你自己的RecyclerView后,实现日 ...
最新文章
- 软件工程 项目管理的目标和细节
- 微软发布了Spartan项目的细节,并证实了某些流言
- opencl fft实例整理
- 操作系统实验1—实现单处理机下的进程调度程序
- 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
- 亲历腾讯WEB前端开发三轮面试经历及面试题
- UVALive 6511 Term Project
- 1.8 简单卷积网络示例
- 全新的移动界面设计素材
- 打开含avi格式视频文件的文件夹“死机”问题的解决
- Adobe Dreamweaver的使用教程
- 在五环六环之间,有最真实的北京
- 文章标签设计方法,文章Tags数据库设计方法举例
- 中文文本分析, Text-Analysis
- 西安的一些互联网公司一览
- 编译原理 赋值语句翻译成四元式
- 教你四个步骤在Word中设计毕业论文目录
- Quartus II 软件编写程序及烧录步骤
- 上传和下载歌曲文件(C#)
- 简体字与繁体字对照表 “学习繁体字”