# L365Calendar **Repository Path**: zhouerty/L365Calendar ## Basic Information - **Project Name**: L365Calendar - **Description**: 365日历的重新编译实现 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-06-27 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **这个项目中的UI部分素材大都通过反编译365日历得到, 请勿用于商业用途.** # UI部分 ![img](README/all_in_one_160214.gif) 这是整体效果, 暂时没有制作各个部分的视图gif, 以下进行介绍实现. ## 引导页部分 引导页部分采用了VerticalViewPager, 这个ViewPager由v4包中的ViewPager修改得到. 使用方法与其相同. 值得借鉴的是在开始页面中嵌入fragment, 这样分离引导与开始界面, 而且为以后广告的插入留住了空间. 最后部分的按钮是anim动画. ## 主界面 主界面是由4个Fragment组成, 切换采用hide而非replace. 这样保证了4个主界面快速切换. 与365日历不同的是, 这四个Fragment只有两个与其相同, 分别是日历与设置界面. 其余两个需要服务器交互, 准备使用轨迹跟踪与计步器代替. `目前制作了定位服务` ### 设置界面 采用了365日历的布局方式, 在代码中重构进行布局, 这一点感觉不错. 是一个很好的方式. ## 日历视图 日历视图是整个App中UI部分最复杂的部分, 此处采用了365日历的设计思路, 具体实现与其略有不同. 总的来说动画部分就是View的Event事件传递与拦截. 这里用到了所有事件回调函数. 就View绘制方面, 整个月历视图是一个自定义View, 均是使用画布进行绘制, 并且对文字及位置进行了缓存, 保证了View绘制的高效性, 保证了视图的流畅. ## 其余所有可编辑界面 其余所有可编辑界面均在一个AllEditActivity中, 各自的特色布局是各自的Fragment, 为了保证跨Activity传值, 采用了java的反射机制, 这样就巧妙的避开了在Manifest配置的麻烦, 而且, 公用了很多东西, 大大减少了代码重复量. 例如, 所有编辑界面保存取消, 这些Dialog提示几乎完全相同, 通过基类AllEditFragmentBase联系在一起. ## 自定义的Dialog与Picker dialog采用的是sweet-alert-dialog. time-picker采用的是IOS样式的滚动选中, 三种picker均采用DailogFragment, 可以实现横屏. 而且与此应用关联很小, 可以独立提取, 作为单独控件. 选择类Dialog的样式同样是仿IOS, 但是样式布局是以QQ为模板. 同样可作为单独控件. 由下部弹出的Dialog, 共用一个基类DialogFragmentBase, 其中封装了共用方法与共用布局. # 完全的MVP实现, 以及相应的单元测试 项目中只要设计需要单元测试的UI部分几乎都使用了MVP的实现方式. 并且引入了Roboletric单元测试框架. 单元测试对产品的重要性毋庸置疑, 单是由于Android特有的activity单元测试比较麻烦. 比较流行的是MVP架构方式. 对MVP不太熟悉的朋友可以先了解下MVP, 有助于快速理解本项目的结构. 单元测试框架使用的是Roboletric, 很简单, 值得使用. # **注意** 项目中使用了百度定位, 并且配置了定位服务. 不过没有上传功能. 此定位服务属个人需求, 毕竟这个应用主要还是为了满足自己的要求. 需要的朋友可以编译的时候可以保留, 不需要的朋友, 请自行更改. 在此做一次提示. 免得被你们说人品问题. # 其他 日历的定时服务主要参见Android系统自带的日历定时服务管理. # 不足 - 目前日程管理中的日程新建中照片查看, 地址获取均没有实现. - 日历滑动动画比较生硬(可以通过更改动画时间等配置改善) - 重要的事情说三遍, 这个项目是反编译得到的素材. 请勿用于商业用途 - 此README是由org-mode, 在此也向你们推荐以下emacs -\_-;